modbus协议_PC实现

modbus协议_PC实现

ID:44870950

大小:74.50 KB

页数:3页

时间:2019-10-31

modbus协议_PC实现_第1页
modbus协议_PC实现_第2页
modbus协议_PC实现_第3页
资源描述:

《modbus协议_PC实现》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、modbus协议-PC端的实现我使用C++Builder6.0调用Win32API实现的。首先开一个线程。void__fastcallTForm1::FormCreate(TObject*Sender){ReadComm=newTRead232(true);ReadComm->FreeOnTerminate=true;}通过一个按钮实现打开/关闭串口void__fastcallTForm1::Button1Click(TObject*Sender){if(Button1->Caption=="打开通讯端口")//按钮名称是"打开通讯端

2、口"?{char*ComNo;DCBdcb;StringTemp;Temp="COM"+IntToStr(rdCom->ItemIndex+1);//TRadioGroup*rdCom;定义要选择的串口ComNo=Temp.c_str();hComm=CreateFile(ComNo,GENERIC_READ

3、GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,0);if(hComm==INVALID_HANDLE_VALUE){MessageBox(0,"打开串口失败!!","SetError",MB_OK);

4、return;}GetCommState(hComm,&dcb);dcb.BaudRate=CBR_9600;dcb.ByteSize=8;dcb.Parity=NOPARITY;dcb.StopBits=ONESTOPBIT;if(!SetCommState(hComm,&dcb)){MessageBox(0,"打通讯端口设置错误!!","SetError",MB_OK);CloseHandle(hComm);return;}Timer1->Enabled=True;Button1->Caption="关闭串口";Shape1->B

5、rush->Color=clRed;//启动接收线程ReadComm->Resume();}else{Button1->Caption="打开通讯端口";CloseHandle(hComm);Shape1->Brush->Color=clBlack;Timer1->Enabled=False;ReadComm->Terminate();}}接收由线程TRead232完成void__fastcallTRead232::Execute(){SetName();//----Placethreadcodehere----if(!Termina

6、ted)Synchronize(ReadData);}//---------------------------------------------------------------------------void__fastcallTRead232::ReadData(){Form1->Caption="Updatedinathread";StringTemp;charinbuff[1024];DWORDnBytesRead,dwEvent,dwError;COMSTATcs;if(hComm==INVALID_HANDLE_VA

7、LUE){MessageBox(0,"串口失败!!","SetError",MB_OK);return;}ClearCommError(hComm,&dwError,&cs);Form1->Edit1->Text=cs.cbInQue;if(cs.cbInQue>sizeof(inbuff)){PurgeComm(hComm,PURGE_RXCLEAR);return;}ReadFile(hComm,inbuff,cs.cbInQue,&nBytesRead,NULL);inbuff[cs.cbInQue]='';Form1->M

8、emo1->Text=Form1->Memo1->Text+inbuff;}发送是定时器TIMER1触发,定时发送的。void__fastcallTForm1::Timer1Timer(TObject*Sender){charSendData[20];bytech;inti;unsignedlonglrc,BS;if(hComm==0)return;SendData[0]=0x41;SendData[1]=0x03;SendData[2]=0x00;SendData[3]=0x01;SendData[4]=0x00;SendData[

9、5]=0x04;SendData[6]=0x1b;SendData[7]=0x09;SendData[8]='';//BS=8;//StrLen(SendData);for(i=0;i<=7;i++){ch=Send

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。