我用SerialPort类编写串口通信程序,定义数组c[8]并初始化,用WriteToPort写入串口,现在我想通过一个按钮“发送数据”,实现两个不同数组的发送,先发c[8],在发a[8],要怎么实现。我的程序是
void CSerialPortTestDlg::OnButtonSend() 
{
char c[8];
c[0]='\xA4';
...
c[7]='\x22';
m_port.WriteToPort((LPCTSTR)c);
char a[8]
a[0]='\x12';
...
a[8]='\x56';
m_port.WriteToPort((LPCTSTR)a);
}

解决方案 »

  1.   

    这样好像是不行的,可能只有后面的那个数组发出去,缓冲区覆盖(serialport这个类是异步),可以用串口捕捉工具看看有没有发出去,最好是在在两个数组之间延时一小段时间,
      

  2.   

    谢谢,原来是缓冲区覆盖,我在数组织之间加了Sleep(2000),程序运行后就会先延时2秒,再同时发出去,我该怎么做才能保证先发一个数组,延时,再发另一个数组
      

  3.   

    正解
    我以前也遇到过这样的问题 
    在要发送的数组中间sleep下就可以了
      

  4.   

    我一般不同sleep
    用定时器
    WriteToPort(数组1)
    settimer(1,2000,Null);
    在timer消息里面
    WriteToPort(数组2)
      

  5.   

    正解 
    我以前也遇到过这样的问题 
    在要发送的数组中间sleep下就可以了 
    [/Quote]
    是要这样写吗?
    void CSerialPortTestDlg::OnButtonSend() 

    char c[8]; 
    c[0]='\xA4'; 
    ... 
    c[7]='\x22'; 
    m_port.WriteToPort((LPCTSTR)c); 
    Sleep(2000);
    char a[8] 
    a[0]='\x12'; 
    ... 
    a[8]='\x56'; 
    m_port.WriteToPort((LPCTSTR)a); 
    }
    但是运行后点击按钮,会先延时在同时发出两个数组