//---------------------------------------------------------------------------
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include "DefStruct.h"
//---------------------------------------------------------------------------
typedef void __stdcall (*FGetShareData)(
struct PriceData *stPrice, struct TimesData *stTimes,
struct PowerData *stPower, struct WarnData *stWarn,
struct ICData *stIC, struct ItData *stIt);typedef void __stdcall (*FSetShareData)(
struct PriceData *stPrice, struct TimesData *stTimes,
struct PowerData *stPower, struct WarnData *stWarn,
struct ICData *stIC, struct ItData *stIt);
//---------------------------------------------------------------------------
//初始化共享内存数据结构
void InitShareData(TShareData *sharedata)
{
memset(&sharedata->stPriceData, 0, sizeof(struct PriceData));
memset(&sharedata->stTimesData, 0, sizeof(struct TimesData));
memset(&sharedata->stPowerData, 0, sizeof(struct PowerData));
memset(&sharedata->stWarnData, 0, sizeof(struct WarnData));
memset(&sharedata->stICData, 0, sizeof(struct ICData));
memset(&sharedata->stItData, 0, sizeof(struct ItData));
}
//---------------------------------------------------------------------------
//取共享内存数据
long GetSharedData(TShareData *sharedata)
{
HANDLE hdll = LoadLibrary("SpvsData.dll");
if(hdll == NULL)
return -1; FGetShareData GetShareData = (FGetShareData)GetProcAddress(hdll, "GetIcData");
if(GetShareData == NULL)
return -1; GetShareData(&sharedata->stPriceData, &sharedata->stTimesData, &sharedata->stPowerData,
&sharedata->stWarnData, &sharedata->stICData, &sharedata->stItData);
return 0;
}
//---------------------------------------------------------------------------
//置共享内存数据
long SetSharedData(TShareData *sharedata)
{
HANDLE hdll = LoadLibrary("SpvsData.dll");
if(hdll == NULL)
return -1; FSetShareData SetShareData = (FGetShareData)GetProcAddress(hdll, "SetIcData");
if(SetShareData == NULL)
return -1; SetShareData(&sharedata->stPriceData, &sharedata->stTimesData, &sharedata->stPowerData,
&sharedata->stWarnData, &sharedata->stICData, &sharedata->stItData);
return 0;
}//---------------------------------------------------------------------------long __stdcall WriteCard(HANDLE hHandle, long iPort,
long iBps, char *sWPassword,
long IsShow)
{
TShareData sharedata;
long rv;
InitShareData(&sharedata);
//取共享内存数据
rv = GetSharedData(&sharedata);
if(rv != 0) return rv;
switch(sharedata.stICData.CardID)
{
//
case 2:
// break; //
case 3:
break; // case 4:
break; //555 case 5:
break;
default:
;
}
return rv;
}
//---------------------------------------------------------------------------long __stdcall ReadCard(HANDLE hHandle, long iPort,
long iBps, char *sRPassword,
long IsShow)
{
TShareData sharedata;
long rv; InitShareData(&sharedata);
//读数据
//置共享内存数据
rv = SetSharedData(&sharedata);
return rv;
}
//---------------------------------------------------------------------------
long __stdcall WriteAreaNo(HANDLE hHandle, long iPort,
long iBps ,char *sWPassword)
{
TShareData sharedata;
long rv; InitShareData(&sharedata);
//取共享内存数据
rv = GetSharedData(&sharedata);
if(rv != 0) return rv; return 0;
}//---------------------------------------------------------------------------
long __stdcall ReadAreaNo(HANDLE hHandle ,long iPort ,
long iBps ,char *sRPassword,
char *MeterTypeID )
{
TShareData sharedata;
long rv;
InitShareData(&sharedata);
//读数据 //置共享内存数据
rv = SetSharedData(&sharedata);
return rv;
}//---------------------------------------------------------------------------这段VC的处理共享内存代码的可以用VB实现吗? 先谢了!
#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#include "DefStruct.h"
//---------------------------------------------------------------------------
typedef void __stdcall (*FGetShareData)(
struct PriceData *stPrice, struct TimesData *stTimes,
struct PowerData *stPower, struct WarnData *stWarn,
struct ICData *stIC, struct ItData *stIt);typedef void __stdcall (*FSetShareData)(
struct PriceData *stPrice, struct TimesData *stTimes,
struct PowerData *stPower, struct WarnData *stWarn,
struct ICData *stIC, struct ItData *stIt);
//---------------------------------------------------------------------------
//初始化共享内存数据结构
void InitShareData(TShareData *sharedata)
{
memset(&sharedata->stPriceData, 0, sizeof(struct PriceData));
memset(&sharedata->stTimesData, 0, sizeof(struct TimesData));
memset(&sharedata->stPowerData, 0, sizeof(struct PowerData));
memset(&sharedata->stWarnData, 0, sizeof(struct WarnData));
memset(&sharedata->stICData, 0, sizeof(struct ICData));
memset(&sharedata->stItData, 0, sizeof(struct ItData));
}
//---------------------------------------------------------------------------
//取共享内存数据
long GetSharedData(TShareData *sharedata)
{
HANDLE hdll = LoadLibrary("SpvsData.dll");
if(hdll == NULL)
return -1; FGetShareData GetShareData = (FGetShareData)GetProcAddress(hdll, "GetIcData");
if(GetShareData == NULL)
return -1; GetShareData(&sharedata->stPriceData, &sharedata->stTimesData, &sharedata->stPowerData,
&sharedata->stWarnData, &sharedata->stICData, &sharedata->stItData);
return 0;
}
//---------------------------------------------------------------------------
//置共享内存数据
long SetSharedData(TShareData *sharedata)
{
HANDLE hdll = LoadLibrary("SpvsData.dll");
if(hdll == NULL)
return -1; FSetShareData SetShareData = (FGetShareData)GetProcAddress(hdll, "SetIcData");
if(SetShareData == NULL)
return -1; SetShareData(&sharedata->stPriceData, &sharedata->stTimesData, &sharedata->stPowerData,
&sharedata->stWarnData, &sharedata->stICData, &sharedata->stItData);
return 0;
}//---------------------------------------------------------------------------long __stdcall WriteCard(HANDLE hHandle, long iPort,
long iBps, char *sWPassword,
long IsShow)
{
TShareData sharedata;
long rv;
InitShareData(&sharedata);
//取共享内存数据
rv = GetSharedData(&sharedata);
if(rv != 0) return rv;
switch(sharedata.stICData.CardID)
{
//
case 2:
// break; //
case 3:
break; // case 4:
break; //555 case 5:
break;
default:
;
}
return rv;
}
//---------------------------------------------------------------------------long __stdcall ReadCard(HANDLE hHandle, long iPort,
long iBps, char *sRPassword,
long IsShow)
{
TShareData sharedata;
long rv; InitShareData(&sharedata);
//读数据
//置共享内存数据
rv = SetSharedData(&sharedata);
return rv;
}
//---------------------------------------------------------------------------
long __stdcall WriteAreaNo(HANDLE hHandle, long iPort,
long iBps ,char *sWPassword)
{
TShareData sharedata;
long rv; InitShareData(&sharedata);
//取共享内存数据
rv = GetSharedData(&sharedata);
if(rv != 0) return rv; return 0;
}//---------------------------------------------------------------------------
long __stdcall ReadAreaNo(HANDLE hHandle ,long iPort ,
long iBps ,char *sRPassword,
char *MeterTypeID )
{
TShareData sharedata;
long rv;
InitShareData(&sharedata);
//读数据 //置共享内存数据
rv = SetSharedData(&sharedata);
return rv;
}//---------------------------------------------------------------------------这段VC的处理共享内存代码的可以用VB实现吗? 先谢了!
譬如
//取共享内存数据
long GetSharedData(TShareData *sharedata)
{
HANDLE hdll = LoadLibrary("SpvsData.dll");
if(hdll == NULL)
return -1; FGetShareData GetShareData = (FGetShareData)GetProcAddress(hdll, "GetIcData");
if(GetShareData == NULL)
return -1; GetShareData(&sharedata->stPriceData, &sharedata->stTimesData, &sharedata->stPowerData,
&sharedata->stWarnData, &sharedata->stICData, &sharedata->stItData);
return 0;
}
里面的指针类型的参数用VB怎么传啊 急啊 555