急急急,串口通信问题;我用使用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();
}
我的程序如下:(我做了一个编辑框,一个发送数据按钮还有一个显示框作验证的)
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();
}
例如
BYTE Bhead[13] = {0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x60,0x00,0x07};
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));
这个主要是看单片机支持的是什么,是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
可以加QQ群25162348.