VB讀取485溫度計問題求教
-
PrivateSubCommand1_Click()'發(fā)送指令Dimpu()AsByteDimstrdataAsStringDimcrc_js()AsByteReDimpu(5)pu(0)="&H00"pu(1)="&H03"pu(2)="&H00"'2、3為溫度計地址pu(3)="&H00"'2、3為溫度計... Private Sub Command1_Click() '發(fā)送指令 Dim pu() As Byte Dim strdata As String Dim crc_js() As Byte ReDim pu(5) pu(0) = "&H00" pu(1) = "&H03" pu(2) = "&H00" '2、3為溫度計地址 pu(3) = "&H00" '2、3為溫度計地址 pu(4) = "&H00" '4、5為讀取寄存器長度 pu(5) = "&H01" '4、5為讀取寄存器長度 crc_js = CRC16(pu()) MSComm1.Output = pu MSComm1.Output = crc_js MSComm1.OutBufferCount = 0 '清除發(fā)送緩沖區(qū) End Sub Private Sub Form_Load() MSComm1.CommPort = 7 '串口為7 MSComm1.Settings = "9600,n,8,1" MSComm1.RThreshold = 1 '發(fā)送頻率為1每發(fā)送一個字符都會使 MSComm 控件觸發(fā)OnComm 事件 MSComm1.SThreshold = 1 MSComm1.InBufferCount = 0 '清除接收緩沖區(qū) MSComm1.OutBufferCount = 0 '清除發(fā)送緩沖區(qū) MSComm1.InputMode = comInputModeBinary '二進制接收 If Not MSComm1.PortOpen Then MSComm1.PortOpen = True '打開串口 End If End Sub Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False End Sub Private Sub MSComm1_OnComm() 'COM事件 Print "返回值:" & MSComm1.CommEvent Select Case MSComm1.CommEvent Case comEventBreak MsgBox "comEventBreak" Case comEventCDTO MsgBox "comEventCDTO" Case comEventCTSTO MsgBox "comEventCTSTO" Case comEventDSRTO MsgBox "comEventDSRTO" Case comEventFrame MsgBox "comEventFrame" Case comEventOverrun MsgBox "comEventOverrun" Case comEventRxOver MsgBox "comEventRxOver" Case comEventRxParity MsgBox "comEventRxParity" Case comEventTxFull MsgBox "comEventTxFull" Case comEventDCB MsgBox "comEventDCB" Case comEvCD MsgBox "comEvCD" Case comEvCTS MsgBox "comEvCTS" Case comEvDSR MsgBox "comEvDSR" Case comEvRing MsgBox "comEvRing" Case comEvEOF MsgBox "comEvEOF" Case comEvReceive MsgBox "接收到數(shù)據(jù)返回" End Select End Sub 結(jié)果是 MSComm1.CommEvent = 1 'ComEvSend 1 發(fā)送緩沖區(qū)中的字符數(shù)少于 SThreshold。 我想獲取溫度計溫度,該如何寫啊,求高手指點,附通訊協(xié)議。 展開
全部評論(1條)
-
- fdutwefw 2017-06-03 00:00:00
- 輸出時不要清緩沖區(qū)Private Sub Command1_Click() '發(fā)送指令 Dim pu() As Byte Dim strdata As String ReDim pu(5) pu(0) = "&H00" pu(1) = "&H03" pu(2) = "&H00" '2、3為溫度計地址 pu(3) = "&H00" '2、3為溫度計地址 pu(4) = "&H00" '4、5為讀取寄存器長度 pu(5) = "&H01" '4、5為讀取寄存器長度 MSComm1.Output = pu MSComm1.Output = CRC16(pu) 'MSComm1.OutBufferCount = 0 '清除發(fā)送緩沖區(qū) End Sub事件處理程序不要用 Msgbox,也沒必要每種事件都處理。Private Sub MSComm1_OnComm() 'COM事件 Dim RcvBuff() As Byte Debug.Print "返回值:" & MSComm1.CommEvent Select Case MSComm1.CommEvent Case comEvReceive DoEvents RcvBuff = MSComm1.Input ' '處理 RcvBuff 中的返回報文 ' Case Else 'Donothing... End Select End Sub如何處理收到的報文我就不寫了,你自己研究。
-
贊(3)
回復(fù)(0)
熱門問答
- VB讀取485溫度計問題求教
- PrivateSubCommand1_Click()'發(fā)送指令Dimpu()AsByteDimstrdataAsStringDimcrc_js()AsByteReDimpu(5)pu(0)="&H00"pu(1)="&H03"pu(2)="&H00"'2、3為溫度計地址pu(3)="&H00"'2、3為溫度計... Private Sub Command1_Click() '發(fā)送指令 Dim pu() As Byte Dim strdata As String Dim crc_js() As Byte ReDim pu(5) pu(0) = "&H00" pu(1) = "&H03" pu(2) = "&H00" '2、3為溫度計地址 pu(3) = "&H00" '2、3為溫度計地址 pu(4) = "&H00" '4、5為讀取寄存器長度 pu(5) = "&H01" '4、5為讀取寄存器長度 crc_js = CRC16(pu()) MSComm1.Output = pu MSComm1.Output = crc_js MSComm1.OutBufferCount = 0 '清除發(fā)送緩沖區(qū) End Sub Private Sub Form_Load() MSComm1.CommPort = 7 '串口為7 MSComm1.Settings = "9600,n,8,1" MSComm1.RThreshold = 1 '發(fā)送頻率為1每發(fā)送一個字符都會使 MSComm 控件觸發(fā)OnComm 事件 MSComm1.SThreshold = 1 MSComm1.InBufferCount = 0 '清除接收緩沖區(qū) MSComm1.OutBufferCount = 0 '清除發(fā)送緩沖區(qū) MSComm1.InputMode = comInputModeBinary '二進制接收 If Not MSComm1.PortOpen Then MSComm1.PortOpen = True '打開串口 End If End Sub Private Sub Form_Unload(Cancel As Integer) MSComm1.PortOpen = False End Sub Private Sub MSComm1_OnComm() 'COM事件 Print "返回值:" & MSComm1.CommEvent Select Case MSComm1.CommEvent Case comEventBreak MsgBox "comEventBreak" Case comEventCDTO MsgBox "comEventCDTO" Case comEventCTSTO MsgBox "comEventCTSTO" Case comEventDSRTO MsgBox "comEventDSRTO" Case comEventFrame MsgBox "comEventFrame" Case comEventOverrun MsgBox "comEventOverrun" Case comEventRxOver MsgBox "comEventRxOver" Case comEventRxParity MsgBox "comEventRxParity" Case comEventTxFull MsgBox "comEventTxFull" Case comEventDCB MsgBox "comEventDCB" Case comEvCD MsgBox "comEvCD" Case comEvCTS MsgBox "comEvCTS" Case comEvDSR MsgBox "comEvDSR" Case comEvRing MsgBox "comEvRing" Case comEvEOF MsgBox "comEvEOF" Case comEvReceive MsgBox "接收到數(shù)據(jù)返回" End Select End Sub 結(jié)果是 MSComm1.CommEvent = 1 'ComEvSend 1 發(fā)送緩沖區(qū)中的字符數(shù)少于 SThreshold。 我想獲取溫度計溫度,該如何寫啊,求高手指點,附通訊協(xié)議。 展開
- VB 關(guān)于MODBUS RTU 通訊數(shù)據(jù)讀取問題
- 看網(wǎng)上其它人寫的源程序,讀取輸入時 Dim a(8) As Byte a = MSComm1.Input 但是我在運行時,總是提示"不能給數(shù)組賦值",看幫助說明也是不能給數(shù)組賦值,那其他人的程序上是怎么實現(xiàn)的?(已將串口模式更改為二進制模式). 謝謝!
- 怎樣讀取溫濕度傳感器的485數(shù)據(jù)
- LabVIEW中VISO讀取老是失敗,想讀取電子負載輸入功率,求教。
- 求教:壓力控制問題。
- 我想設(shè)計一套氣壓控制的檢測系統(tǒng),情形大致如下:1、向密閉的空間(大約20立方厘米)注入壓縮空氣,保壓,測得氣壓值P1。2、持續(xù)保壓10秒之后,測得氣壓值P2。3、將前后測得的氣壓值對... 我想設(shè)計一套氣壓控制的檢測系統(tǒng),情形大致如下:1、向密閉的空間(大約20立方厘米)注入壓縮空氣,保壓,測得氣壓值P1。 2、持續(xù)保壓10秒之后,測得氣壓值P2。 3、將前后測得的氣壓值對比,如果漏氣,則所測產(chǎn)品不合格,不漏氣為合格。 請問:除去機械部分,我該選用哪些電器控制元件,請推薦一下具體產(chǎn)品的品牌以及型號。 展開
- 求教一個拉曼光譜問題?
- 請問一下,我做的鐵摻雜的二氧化錫(Fe-doped SnO2),拉曼光譜做出來存在Fe2O3和SnO2的峰,這里Fe2O3的峰時證明樣品中存在氧化鐵,還是說明鐵是以三價形式進入SnO2晶格的啊!XRD中無Fe2O3峰!
- scanf讀取文件的問題
- 如何用scanf讀取以下格式的數(shù)據(jù)有空格和其他字符,如何得到這四組數(shù) 1892-22-54 55:22:99,11.347213,0.585384 scanf(“”,)
- plc通過485通訊讀取蒼南流量計evc300的方法,急急,謝謝
- 求教燈絲電流不夠問題
- 求教,蜘蛛的運輸問題
- 變壓器溫度計的問題?
- 圖片中溫度計中的1、2、3、4的指針標注的意思對嗎?我總覺得不對!另外紅色指針是干什么用的?謝謝1,2,3,4那有四個小指針... 圖片中溫度計中的1、2、3、4的指針標注的意思對嗎?我總覺得不對!另外紅色指針是干什么用的?謝謝 1,2,3,4那有四個小指針 展開
- 求教斷路器操作箱的問題
- Z近在效驗500KV的線路保護裝置,那些保護AB屏的信號出口好像都是送到斷路器操作箱里面去,求高人指點斷路器操作箱的作用?
- 核磁血管成像問題,求教。。
- 核磁腦血管成像正常,是不是代表不會得腦出血了?,還有腦出血會慢慢的持續(xù)到很久才被發(fā)現(xiàn)嗎?。
- 流變儀測定物質(zhì)粘彈性問題求教
- 關(guān)于電化學(xué)工作站,氧化還原電位問題求教
- 關(guān)于電子剝離試驗機讀取和換算問題?
- 使用電子剝離試驗機測抗拉測試結(jié)果是Fd183.1N和F-9.15KN/m這2個結(jié)果具體是什么意思。還有KN/m和N/cm之間如何換算啊謝謝舉例告訴下。... 使用電子剝離試驗機測抗拉測試結(jié)果是 Fd 183.1N 和 F- 9.15KN/m 這2個結(jié)果具體是什么意思。 還有KN/m和N/cm 之間如何換算啊 謝謝舉例告訴下。 展開
- 485壓力變送器
- VB中寫入數(shù)據(jù)到dategrid的問題
- 我寫的程序,單擊一下可以將txt文本框中的數(shù)值分別存入dategrid對應(yīng)的列中,但是我想限制某一文本框值的存入,當這個值和dategrid中已有數(shù)值重復(fù)時就彈出錯誤提示:某字段值不能出現(xiàn)重復(fù)的值,請問該怎么寫,謝謝
- 請教反應(yīng)釜用溫度計問題
- 反應(yīng)釜上用的溫度計,就是外面有個表,可讀出溫度,下面有個一米或兩米長的鐵棒可以插在溫度計套管里的,這種溫度計叫什么溫度計,在哪里可買到?
- 求教430單片機讀取DHT11溫濕度傳感器的值,為什么不對呢?
- #include
#defineucharunsignedchar#defineuintunsignedint#defineDATA_INP1DIR|=BIT2;//P1REN|=BIT2;#defineDATA_OUTP1DIR&=~BIT2;//P1REN|=BIT2;#defineS_DATA_HP1OUT... #include #define uchar unsigned char #define uint unsigned int #define DATA_IN P1DIR |= BIT2; //P1REN |=BIT2; #define DATA_OUT P1DIR &=~BIT2; //P1REN |=BIT2; #define S_DATA_H P1OUT |= BIT2; #define S_DATA_L P1OUT &=~BIT2; #define G_DATA P1IN&0X04 uchar value; void main(void) {uchar x;
uchar j,i,temp=0;
WDTCTL=WDTPW+WDTHOLD;
DATA_OUT;
S_DATA_H;
while(1)
{
S_DATA_L;
__delay_cycles(1800); //>18ms
S_DATA_H;
__delay_cycles(50);
DATA_IN;
while(G_DATA!=0); //等待從機拉高
__delay_cycles(65); //80us
for(j=5;j>0;j++)
{
for(i=8;i>0;i--)
{
value<<=1;
while(G_DATA==0); //等待從機數(shù)據(jù)
temp=0; //短,0
__delay_cycles(40); //40us
while(G_DATA!=0)
temp=1; //長,1
value |=temp;
__delay_cycles(50); //40us
} } } } 展開
4月突出貢獻榜
推薦主頁
最新話題





參與評論
登錄后參與評論