
仅供参考:
1、与串口通讯不使用mscomm,难道还要再写个通讯模块吗,vc的话貌似只能用这个~
2、
void CSCommTestDlg::OnComm(){VARIANT variant_inp
COleSafeArray safearray_inp
LONG len,k
BYTE rxdata[2048] //设置BYTE数组(8位无符号整数)
CString strtemp
if(m_ctrlComm.GetCommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
variant_inp=m_ctrlComm.GetInput()//读缓冲区
safearray_inp=variant_inp //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize() //得到有效数据长度
for(k=0k
safearray_inp.GetElement(&k,rxdata+k)//转换为BYTE型数组
for(k=0k
{
PLCData[k]=rxdata[k]
}
verfun(PLCData,16)//计算校验码
if(PLCData[15]==PLCData[16])
{ //接收数据正确发送确认信号
m_ctrlComm.SetOutput(COleVariant(“K@”))
//可以在下面自行加上对数据的处理
if(!m_quit)//如果没有结束信号则续传数据
m_ctrlComm.SetOutput(COleVariant(“C@”))
else
m_ctrlComm.SetOutput(COleVariant(“Z@”))
}
else //接收数据出错要求重发数据
m_ctrlComm.SetOutput(COleVariant(“R@”))
1、上位机采用PC,内装VC++2、采用串口通讯与下位机---单片机、PLC等通讯
3、将来自下位机的数据,采用MFC中的CDC类,并结合多线程,很容易做成动态示波曲线
4、更多交流参考我空间文章。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)