通訊介面的設計,485通訊需要有檢驗位,停止位,資料位,波特率四個引數設定,以及有關於電腦的串口號選擇。
設計乙個大概的介面,這些中文都可以右擊屬性,名字直接改就好了。
我們可以對這些選擇新增選擇專案,並通過索引賦予其初始選擇的項,例如波特率有1200,2400,4800,9600,通過this.combobox2.selectedindex剛開啟時預設選擇9600波特率
private
void
form2_load
(object sender, eventargs e)
this
.combobox1.selectedindex =0;
//剛開始預設的選擇位
this
.combobox2.items.
add(
"1200");
//資料通訊速率選擇
this
.combobox2.items.
add(
"4800");
this
.combobox2.items.
add(
"9600");
this
.combobox2.items.
add(
"115200");
this
.combobox2.selectedindex =2;
this
.combobox5.items.
add(
"奇校驗");
//檢驗選擇
this
.combobox5.items.
add(
"偶校驗");
this
.combobox5.items.
add(
"無")
;this
.combobox5.selectedindex =0;
this
.combobox4.items.
add(
"1")
;//資料位數選擇
this
.combobox4.items.
add(
"2")
;this
.combobox4.items.
add(
"3")
;this
.combobox4.items.
add(
"4")
;this
.combobox4.items.
add(
"5")
;this
.combobox4.items.
add(
"6")
;this
.combobox4.items.
add(
"7")
;this
.combobox4.items.
add(
"8")
;this
.combobox4.selectedindex =7;
this
.combobox3.items.
add(
"1")
;//停止位選擇
this
.combobox3.items.
add(
"2")
;this
.combobox3.items.
add(
"無")
;this
.combobox3.selectedindex =0;
form1 form =
newform1()
; form.
showdialog()
;this
.hide()
;}
我的電腦串列埠插上去是3,所以1到10夠用了,有一些串列埠的串口號超過10的時候,這裡迴圈檢測的時候就要增加 i 的數值了,確保你的串口號在迴圈檢測內,不然會檢測不到。這部分**是在串列埠檢測按鈕的**內,雙極檢測串列埠即可進入**段:
private
void
button1_click
(object sender, eventargs e)
catch
(exception)}if
(comexistence)
else
}
檢查完串列埠之後,我們就根據串列埠通訊要求去設定,串列埠通訊,需要設定波特率,校驗位,停止位,資料位。
private
void
setportproperty()
//設定串列埠的屬性
else
if(f ==1)
else
if(f ==
1.5)
else
if(f ==2)
else
sp.databits = convert.
toint16
(this
.combobox4.text.
trim()
);//設定資料位
string s =
this
.combobox5.text.
trim()
;//設定奇偶校驗位
if(s.
compareto
("無")==
0)else
if(s.
compareto
("奇校驗")==
0)else
if(s.
compareto
("偶校驗")==
0)else
sp.readtimeout =-1
;//設定超時讀取時間
sp.rtsenable =
true
; sp.datareceived +
=new
serialdatareceivedeventhandler
(sp_datareceived)
;}
設定完之後,就可以去開啟串列埠,這部分**在開啟串列埠的按鈕內:
在開啟串列埠時,同時也檢查一遍波特率等是否設定了,沒有設定會顯示報錯
private
void
button2_click
(object sender, eventargs e)if(
!issetproperty)
//串列埠未設定則設定串列埠
try//開啟串列埠
catch
(exception)
}else
catch
(exception)
}}
開啟串列埠後,就是傳送資料了
在傳送資料那個按鈕內:
if
(isopen)
else
}else
然後寫send_485()函式的**,這一部分是講text1裡面的文字數值轉化為int型別的陣列,因為我們寫進去是文字型別的,需要轉換,而且這個框內只能寫0-f,不然會報錯, throw new argumentexception(「hex is not a valid hex number!」, 「hex」);跳到這一行函式
public
void
send_485()
catch
}sendmodbusdata
(ref sendbuf)
;}
以下是sendmodbusdata(ref sendbuf)的**:
public
bool
sendmodbusdata
(ref byte[
] values)
//send modbus message to serial port:
trycatch
(exception)
}else
}
這裡需要crc校驗:
public
void
getcrc
(byte[
] message, ref byte[
] crc)
} crc[1]
= crchigh =
(byte)
((crcfull >>8)
&0xff);
crc[0]
= crclow =
(byte)
(crcfull &
0xff);
}
以上就是通過winform向485通訊傳送的**,將485串列埠插入電腦上,**時傳送資料即會有資料發出,可以通過示波器去捕捉波形來驗證。 python入門 第二課
一 傳遞引數與引數型別 傳遞引數就是對已經定義的函式中的引數賦予一定的值來實現對函式的呼叫。我們先定義乙個函式,以梯形的面積函式舉例 def tixing base up,base down,height return 1 2 base up base down height接下來開始呼叫函式 ti...
Python3爬蟲入門第二課
前面用的一直是python內建的urllib庫進行爬蟲實驗,後面發現原來用第三方庫requests更佳 下面這個是對糗事百科的段子爬取,更加規範,符合物件導向,而且特別是requests用起來更方便 在windows系統下只需要在命令列輸入命令 pip install requests 即可安裝。c...
第二課 安裝PHP
為什麼要安裝php?php是伺服器端解析程式,一般執行在網路伺服器上。而編寫php語言的程式我們一般是在自己的個人電腦上完成,然後拿到伺服器上除錯。所以,學習php首先要讓我們的個人電腦模擬伺服器執行環境,讓php能象在伺服器上一樣在我們的個人電腦上執行。這就是為什麼要安裝配置php的原因。安裝配置...