我的问题跨越vc和pb两个编程平台,请高手看看。

xixi2002 2002-05-07 10:04:11
我要实现的是在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.
我该怎么解决这个调用的问题啊。
...全文
12 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
康斯坦汀 2002-05-08
是不是Debug模式的原因呢?
换成Release模式试试。
回复
wumugulu 2002-05-07
好像是参数类型的问题!
回复
xixi2002 2002-05-07
我把程序修改了
int _stdcall HexToChange( VARIANT p, BSTR q)
{
long len ,k,r=0;
BYTE rxdata[2048];
COleSafeArray safearray_inp;
char a[3]="";
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); //字符型
wsprintf(a,"%02x",bt) ;

q[r]=a[0];
r++;
q[r]=a[1];
r++;
}
q[r]='\x00';
return 0;
}
出错的信息也变了,
窗口的标题是,Microsoft Visual c++ Debug Library
program:e:\program files\sybase\powerbuilder 7.0\pb70.exe
abnormal program termination
回复
cailing2000 2002-05-07
不可以用CString 类 要用BSTR pb怎么会认识CString 类呢
================================================================

CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!

★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。

★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。

Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]

回复
cailing2000 2002-05-07
不可以用CString 类 要用BSTR pb怎么会认识CString 类呢
================================================================

CSDN 论坛助手 Ver 1.0 B0402提供下载。 改进了很多,功能完备!

★ 浏览帖子速度极快![建议系统使用ie5.5以上]。 ★ 多种帖子实现界面。
★ 保存帖子到本地[html格式]★ 监视您关注帖子的回复更新。
★ 可以直接发贴、回复帖子★ 采用XML接口,可以一次性显示4页帖子,同时支持自定义每次显示帖子数量。可以浏览历史记录!
★ 支持在线检测程序升级情况,可及时获得程序更新的信息。

★★ 签名 ●
可以在您的每个帖子的后面自动加上一个自己设计的签名哟。

Http://www.ChinaOK.net/csdn/csdn.zip
Http://www.ChinaOK.net/csdn/csdn.rar
Http://www.ChinaOK.net/csdn/csdn.exe [自解压]

回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2002-05-07 10:04
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……