急,求一个MSComm控件串口通讯的解决方案
我要通过串口接收硬件设备发送的信息,我采用的是MSComm控件,代码如下
变量 TMSComm *mscomLink;
//打开串口的代码是:
mscomLink->CommPort=1;
mscomLink->Settings="1200,n,8,1";
mscomLink->PortOpen=true;
其它参数都是控件默认的
InBufferSize为1024,RThreshold为0,SThreshold为0,InputMode为0;
//获取报警主机的报警信号
WideString wstrInf;
AnsiString strInf;
TMemo *memoInf;
if (mscomLink->InBufferCount>0)
{
wstrInf=WideString(mscomLink->Input);
strInf=AnsiString(wstrInf);
memoInf->Lines->Add(strInf);
}
这个程序针对以前的硬件设备都没问题,但是现在的项目硬件设备换了个型号,结果通过这段代码获取的信息是乱码,但是windows的超级终端上获取的信息是正常的字符串,我问了一下,有人告诉我可能是Unicode字符串的转换问题,不知道哪位高手能帮个忙,给个解决方案。
我曾经尝试在MSComm的OnComm事件中写如下代码,结果获取的还是乱码:
char szBuf[4096]={0};
int i,j;
OleVariant RxBuff;
if (mscomLink->CommEvent==comEvReceive)
if (mscomLink->InBufferCount>0)
{
RxBuff=mscomLink->Input;
j=RxBuff.ArrayHighBound(1);
for (i=0;i<=j;i++)
szBuf[i]=RxBuff.GetElement(i);
szBuf[i]=NULL;
memoInf->Lines->Add(AnsiString(szBuf));
}
时间比较急,请高手指点一下,谢谢!