使用现成类 CSerialPort ,定义 CSerialPort m_Port[2];for(int i=0;i<2;i++)
{
if (m_Ports[i].InitPort(this,i + 1,9600,'N',8,1,EV_RXFLAG | EV_RXCHAR,512))
{
//启动串口监视线程
m_Ports[i].StartMonitoring();
m_Ports[i].WriteToPort ("A");
}
else
{
CString str;
str.Format("COM%d 没有发现,或被其它设备占用",i+1);
MessageBox(str,"提示"
,MB_OK|MB_ICONSTOP);
PostQuitMessage(0);
}
}
以上为初始化部分,为什么我在程序中只能对 com2进行写入数据,而无法对 com1进行写数据?我都快疯了,为什么一对com1写入一个字符,就出现内存写操作错误,程序退出。
{
if (m_Ports[i].InitPort(this,i + 1,9600,'N',8,1,EV_RXFLAG | EV_RXCHAR,512))
{
//启动串口监视线程
m_Ports[i].StartMonitoring();
m_Ports[i].WriteToPort ("A");
}
else
{
CString str;
str.Format("COM%d 没有发现,或被其它设备占用",i+1);
MessageBox(str,"提示"
,MB_OK|MB_ICONSTOP);
PostQuitMessage(0);
}
}
以上为初始化部分,为什么我在程序中只能对 com2进行写入数据,而无法对 com1进行写数据?我都快疯了,为什么一对com1写入一个字符,就出现内存写操作错误,程序退出。
所以不能对com1写入!
Sleep(100);//试试!
m_Ports[i].WriteToPort ("A");
在初始化过程中,是可以对com1写入 A字符的,但在程序运行的过程中,我就无法对 com1 写入一个字符。
如果你的工程是视图/文档的话,我一般在视图类中的OnInitialUpdate中做初始化工作.不知道你为什么要在MainFrame中的OnCreate中进行初始化!!!
afx_msg void ................
气人.....