主题:请教VC串口通信问题
小弟近日用VC调用MS Communications control 控件来做串口通信,用它发送数据sscom能
正常接收,而用sscom发送数据则接收不到数据【不能得到2号MSCOmm事件】,不知道为什
么。
串口设置部分代码如下:
m_ComPort.SetDTREnable(false);
m_ComPort.SetEOFEnable(false);
m_ComPort.SetHandshaking(false);
m_ComPort.SetNullDiscard(false);
m_ComPort.SetInputLen(1);
m_ComPort.SetSThreshold(1); //为1表示有一个字符引
m_ComPort.SetRThreshold(1);
m_ComPort.SetInputMode(1); //设置输入方式为十六进制方式
LPCTSTR para = "9600, n, 8, 1";
m_ComPort.SetSettings(para);//(COM_BAUD, n, COM_DATA_BIT, COM_STOP_BIT);
消息响应部分如下:
void CTestCOMDlg::OnCommMscomm()
{
VARIANT vResponse;
int count;
if(m_ComPort.GetCommEvent() == 2){ //接收事件
count = m_ComPort.GetInBufferCount(); //接收到的字符数
if(count > 0){
vResponse = m_ComPort.GetInput(); //读数据
// SaveData(count, (unsigned char*)vResponse.parray->pvData);
CEdit* dataSend = ((CEdit *)GetDlgItem(IDC_DATA_SEND));
dataSend->SetSel(-1, 0);
CString* dataReceive = (CString*)(vResponse.parray->pvData);
dataSend->ReplaceSel(dataReceive->GetBuffer(-1));//((CString)dataR
eceive->GetLength());
}
}
}
兄弟姐妹们帮忙看看是怎么回事儿【硬件没有问题】。谢谢。
正常接收,而用sscom发送数据则接收不到数据【不能得到2号MSCOmm事件】,不知道为什
么。
串口设置部分代码如下:
m_ComPort.SetDTREnable(false);
m_ComPort.SetEOFEnable(false);
m_ComPort.SetHandshaking(false);
m_ComPort.SetNullDiscard(false);
m_ComPort.SetInputLen(1);
m_ComPort.SetSThreshold(1); //为1表示有一个字符引
m_ComPort.SetRThreshold(1);
m_ComPort.SetInputMode(1); //设置输入方式为十六进制方式
LPCTSTR para = "9600, n, 8, 1";
m_ComPort.SetSettings(para);//(COM_BAUD, n, COM_DATA_BIT, COM_STOP_BIT);
消息响应部分如下:
void CTestCOMDlg::OnCommMscomm()
{
VARIANT vResponse;
int count;
if(m_ComPort.GetCommEvent() == 2){ //接收事件
count = m_ComPort.GetInBufferCount(); //接收到的字符数
if(count > 0){
vResponse = m_ComPort.GetInput(); //读数据
// SaveData(count, (unsigned char*)vResponse.parray->pvData);
CEdit* dataSend = ((CEdit *)GetDlgItem(IDC_DATA_SEND));
dataSend->SetSel(-1, 0);
CString* dataReceive = (CString*)(vResponse.parray->pvData);
dataSend->ReplaceSel(dataReceive->GetBuffer(-1));//((CString)dataR
eceive->GetLength());
}
}
}
兄弟姐妹们帮忙看看是怎么回事儿【硬件没有问题】。谢谢。