您好我使用vc ++ 6.0 MSCOMM进行串行通信我必须读取数据(4个字节)并从串口显示。
ex: data format is:
>88 84 10 02 (4 bytes data from port)<br>
>C6 1E 10 02 (Received Data) but i have to display 88 84 but i am getting C6 and 1E.
我的代码是:
VARIANT data;
BSTR k;
static char dbuff[4];
int dcount=0;
CString data;
if(m_mscom.GetCommEvent()==2) // Receiving data from port
{
data=m_mscom.GetInput();
k=data.bstrVal;
dbuff[dcount] = char (k[0]);
dcount++;
if(dcount == 4)
{
dcount=0;
data.Format ("%02X%02X%02X%02X", (unsigned char)dbuff[0],
(unsigned char)dbuff[1], (unsigned char)dbuff[2],
(unsigned char)dbuff[3]);
}
}
请帮助我的代码中有什么问题,提前谢谢,请举例说明如何从端口读取字节。
答案 0 :(得分:1)
如果我是你,我会做以下事情:
试着看看:
WriteFile()
ReadFile()
CreateFile()
无论VS版本如何 - 删除MSCOMM垃圾并使用文件句柄。
或者,如果您坚持使用COM对象,请尝试在线搜索C ++和mscomm - 就像这样的结果: http://www.edaboard.com/thread19993.html
答案 1 :(得分:0)
检查您是否使用了正确数量的停止位,因为您可能会出现歪斜。检查奇偶校验位是否存在传输错误。
我最近使用了一个快速的C#项目来读取串口。如果要切换到C#
,可以发布代码