VB MSCOMM與PLC通訊
發(fā)布時(shí)間:2019-08-01 10:38:59來源:
在啟動(dòng)過程中對(duì)串口和輸入輸出緩沖區(qū)初始化
comm1.Settings = "1200,n,8,1" '設(shè)定波特率1200bps,無校驗(yàn),8位數(shù)據(jù)位,1位停止位
comm1.CommPort = 1 '串口1
comm1.InputLen = 1 '一次從輸入緩沖區(qū)中讀取一個(gè)字符
comm1.InBufferSize = 512 '定義輸入緩沖區(qū)為512字節(jié)(bytes)
comm1.InBufferCount = 0 '清空輸入緩沖區(qū)
comm1.OutBufferCount = 0 '清空輸出緩沖區(qū)
comm1.PortOpen = True '啟動(dòng)串口
上位機(jī)向下位機(jī)發(fā)送的命令有校時(shí)命令、請(qǐng)求內(nèi)存命令、發(fā)送數(shù)據(jù)命令、快采命令和慢采命令等。發(fā)送命令有兩種發(fā)送方式,即手動(dòng)方式和自動(dòng)方式,自動(dòng)方式是由定時(shí)器來完成的。
下面是發(fā)送數(shù)傳命令的子過程,啟動(dòng)該過程由一個(gè)定時(shí)器控制:
Sub sample_data ()
comm1.RTSEnable = True 將上位機(jī)置高,
Call time_delay 適當(dāng)延時(shí)
comm1.Output = "*關(guān)機(jī)" + Chr$(13) 發(fā)送命令
Do
該循環(huán)用來檢測(cè)命令是否全部發(fā)送完畢
Loop Until comm1.OutBufferCount = 0
Call time_delay
適當(dāng)延時(shí)
comm1.RTSEnable = False 將上位機(jī)置低,改為接受狀態(tài)
comm1.InBufferCount = 0 清空接收緩沖區(qū)
comm1.RThreshold = 1 設(shè)定RThreshold = 1,等待出發(fā)OnComm事件
End Sub