帮我看看这段串口代码,有什么问题?本来应该显示磁卡号0005115640,可是确显示成了0005115640,前后各多处来一个字符!
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
if(m_ctrlComm.get_CommEvent()==2)
{
variant_inp=m_ctrlComm.get_Input(); //读缓冲区
safearray_inp=variant_inp; //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("%c",bt); //将字符送入临时变量strtemp存放
m_strRXData+=strtemp; //加入接收编辑框对应字符串
}
}
UpdateData(FALSE); //更新编辑框内容
问题点数:20、回复次数:4Top
1 楼zch6660(差点淹死的鱼)回复于 2005-06-02 17:27:59 得分 0
哪个高手能帮我解决下呀!!!
Top
2 楼liwenbiao_2000(阿彪)回复于 2005-06-02 17:43:00 得分 20
你去看看你所调的控件里面的读缓冲区get_Input()方法看看,读完之后,在接收看看接收到什么,可能就是那里出了问题Top
3 楼zch6660(差点淹死的鱼)回复于 2005-06-02 18:52:47 得分 0
VARIANT get_Input()
{
VARIANT result;
InvokeHelper(0x1a, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, NULL);
return result;
}
我引入的是VB那个串口控件!Top
4 楼zch6660(差点淹死的鱼)回复于 2005-06-02 18:53:00 得分 0
大哥呀,继续解决Top




