当前位置: 代码迷 >> PB >> ,这样外部函数在PB中该怎么申明和调用
  详细解决方案

,这样外部函数在PB中该怎么申明和调用

热度:5   发布时间:2016-04-29 08:32:57.0
紧急求助,这样外部函数在PB中该如何申明和调用?
动态库abc.dll中函数ReadSoftwareVersion 和 TagIdentify,在PB中该如何申明和调用 ? 本人对PB中该如何定义数据类型糊涂,试一下午都没试成功。

函数在VC中用法参考代码如下

函数原型:int ReadSoftwareVersion(HANDLE comm,char *receive)
输入参数:
●——comm:串口句柄
●——*receive:接收软件版本的数组地址。其中receive[0]是软件主版本值,receive[1]是软件次版本值。
返回结果:调用成功返回1,否则返回-1。
调用例程:
int flag;
char receive_data[2];
flag = ReadSoftwareVersion(h_Com,receive_data);
if(flag==1)
{
CString string;
string.Format("Software Version is %d.%d",receive_data[0],receive_data[1]);
AfxMessageBox(string);
}
else
{
AfxMessageBox("Read Software Version Failed!");
}






函数原型:int TagIdentify(HANDLE comm,unsigned char *receive)
功能说明:单标签ID识别
输入参数:
●——comm:串口句柄
●——*receive:接收ID的数组地址
返回结果:调用成功返回1,否则返回-1。
调用例程:
int flag;
unsigned char receive[20];
flag=TagIdentify(h_Com,receive);
if(flag==1)
{
CString string;
string.Format("%02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x %02x",receive[0],receive[1],receive[2],receive[3],receive[4],receive[5],receive[6],receive[7],receive[8],receive[9],receive[10],receive[11]);
AfxMessageBox(string);
}
else
AfxMessageBox("Operation Error!");


------解决方案--------------------
你是如何定义的?

------解决方案--------------------
function int ReadSoftwareVersion(ulong comm, ref char receive[2])

C/C++ code
int flagchar receive_data[2]flag = ReadSoftwareVersion(h_Com,receive_data);if flag = 1 then    messagebox('', 'Software Version is ' + string(receive_data[1]) + '.' + string(receive_data[2]) + '')else    messagebox('', 'Read Software Version Failed!')end if
------解决方案--------------------
function int ReadSoftwareVersion(ulong comm, ref char receive[2]) library 'abc.dll'
------解决方案--------------------
function int TagIdentify(ulong comm, ref char receive[20]) library 'abc.dll'
------解决方案--------------------
function int ReadSoftwareVersion(ulong comm, ref int receive[2]) LIBRARY "abc.dll"
------解决方案--------------------
你加我q:865359042,把dll发给我,我试试
------解决方案--------------------
探讨
引用:

跟PB版本有关系的.


我现在用的是pb9.0,跟版本有关么?要惨了

------解决方案--------------------
参数传递时加个ref试试
ReadSoftwareVersion(ll_hCom, ref softname)
或定义别名:
function int ReadSoftwareVersion(ulong comm, ref char receive[2]) LIBRARY "abc.dll" Alias For "ReadSoftwareVersion;Ansi"
  相关解决方案