我的问题跨越vc和pb两个编程平台,请高手看看。
我要实现的是在com口通讯时把com口返回的ASCII码比如:86 80 00 08 16 转换成字符串8680000816输出,里面存在一个问题就是在ASCII的00上,用PB编程到了00就终止了后面的数据无法读出,只好改用VC编写DLL文件,在有PB调用。
下面是我在vc里编写的dll编码:
int _stdcall HexToChange( VARIANT p, CString &q)
{
long len ,k,r=0;
BYTE rxdata[2048];
COleSafeArray safearray_inp;
CString strtemp;
safearray_inp=p; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%02X ",bt); //将字符以十六进制方式送入临时变量strtemp存放
q+=strtemp; //把字符串加到返回的变参里
}
return 0;
}
在vc下编译通过,
我在pb里这样定义他
function int HexToChange ( string P,ref string q)LIBRARY "BTOR.dll"
这样调用他,
HexToChange(ole_1.object.input(),a)
ole_1.object.input(),是com口返回数据的缓冲区,从里面读去数据。
我用的系统是win2000,pb7.0,vc6.0
编译的时候出现一下错误:
窗口的标题是,Microsoft Visual c++ Debug Library
debug assertion failed!
program:e:\program files\sybase\powerbuilder 7.0\pb70.exe
file:olevar.cpp
line:2553
for information on how your program can cause an assertion
failure,see the visual c++ documentation on asserts.
我该怎么解决这个调用的问题啊。