vc++串口通讯问题请教

来源:百度知道 编辑:UC知道 时间:2024/07/08 01:58:11
我在做串口通讯时出现了一个问题,想请大家帮帮忙,先谢谢了
我的问题是这样的,我用CSerialPort类做串口的通讯,是参考串口调试助手SCOMM.exe的程序的,现在接收没什么问题,但是发送字符串时就会出问题,我发送的程序是
void CComDownLoadDlg::OnPowerOff()
{
// TODO: Add your control notification handler code here
m_strSendData="powerdown\r"; //关机命令

m_Port.WriteToPort((LPCTSTR)m_strSendData); //发送数据
}

发送的原函数是:
void CSerialPort::WriteToPort(LPCTSTR string)
{
assert(m_hComm != 0);

memset(m_szWriteBuffer, 0, sizeof(m_szWriteBuffer));
strcpy(m_szWriteBuffer, string);
m_nWriteSize=strlen(string);

// set event for write
SetEvent(m_hWriteEvent);
}
我是发送到ARM7上接收的,现在发现ARM每次实际上只接收到poeo这四个字符,中间的都丢了,在网上看到说这可能是发送的同步问题,我对VC++不是很熟悉,不知具体该怎么解决,请大家帮帮忙了
谢谢您的回答,现在ARM接收应该没问题的,因为我用定时器一个一个发送时接收就正确,只是连续发送时中间的会少几个,可能是被其它的冲掉了

你最好先不要连接ARM而是连到其他计算机的串口(或者本机的其他串口),然后用串口调试助手看看接收到的字符对吗。

因为感觉可能ARM端接收的问题。

补充:
一个一个发送时接收正确不能说明连续发送ARM接受端就正确。
我们用FPGA接收串口数据时因为缓冲区的问题就出过类似的问题。