急急急,串口通信问题;我用使用VC++提供的串行通信控件MSComm编了一个程序把报文{0x01,0x00,0x03,0xc0,0x08,0xb8,0x06}发送到一块单片机板上,通信口能打开,输入字符也能显示在电脑上,但我不知道怎么把这些十六进制数发送到单片机板上,请问是一个个发送还是当作字符串发送?请高手指点帮我补点程序:
我的程序如下:(我做了一个编辑框,一个发送数据按钮还有一个显示框作验证的)
void CCComDlg::OnOK() 
{
m_mscom.SetCommPort(1); //设置串口
m_mscom.SetRThreshold(1); //设置收到多少个字符后触发OnComm事件
m_mscom.SetPortOpen(TRUE); //打开串口
m_mscom.SetInputMode(1);//二进制数
m_mscom.SetSettings(19200,e,8,1);//参数设置
}//发送数据
void CCComDlg::OnButton1() 
{
CString str ;
m_data.GetWindowText(str);
IsSended = FALSE; //发送完成
m_mscom.SetOutput((COleVariant)str);
IsSended = TRUE; //发送完成
Sleep(1000); //延时1妙
}//接收数据
void CCComDlg::OnOnCommMscomm2() 
{
int resEvent;
resEvent = m_mscom.GetCommEvent();
switch (resEvent)
{
case 2: //接收数据
{
if (IsSended) //开始接收数据
{
VARIANT data;
data = m_mscom.GetInput(); CString str;
str = data.bstrVal;
IsSended = FALSE;
MessageBox(str);
}
}
break;
}
}void CCComDlg::OnCancel() 
{
// TODO: Add extra cleanup here

CDialog::OnCancel();
}

解决方案 »

  1.   

    发字节数组好
    例如
    BYTE Bhead[13] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x60,0x00,0x07};
      

  2.   

    CByteArray   array;               
    array.SetSize(8); array[0]   =   0xF2; 
    array[1]   =   0xF2; array[2]   =   0x00; 
    array[3]   =   0x02; array[4]   =   0x00; 
    array[5]   =   0xC8; array[6]   =   0x00; 
    array[7]   =   0xCA; m_ComPort.SetOutput(COleVariant(array));
      

  3.   

    我的建议就是:VC++ 对于串行口读写用 Win32 API 函数,MSCOMM32控件是提供给VB、PB等工具使用的。而且,当你要发布软件时,你会发现你还要发布这个控件。
      

  4.   

    用CREATEFILE  ,WRITEFILE,CLOSEHANDLE 等API吧,也可用打开串口通信的
      

  5.   

    首先需要说明: 
    这个主要是看单片机支持的是什么,是16进制,还是字符串.主要看单片机支持什么如果要发送 有好多种方法!
    CString str = 0x01,0x00,0x03,0xc0,0x08,0xb8,0x06
    然后按照","分解,就可以,然后存放在字符数组中.
    char[7];
    char[0] = 0x01;
    char[1] = 0x00;
    char[2] = 0x03;
    char[3] = 0xC0;
    char[4] = 0x08;
    char[5] = 0xb8;
    char[6] = 0x06
      

  6.   

    搞编程技术,嵌入式,人工智能,黑白客技术,linux,evc,VB,VC,C#,JAVA,
    可以加QQ群25162348.