下面闡述一下幾點:
(1)需要呼叫serialport類
示例**:
public static void main()
else
>: ", name, message));}}
readthread.join();
_serialport.close();
}public static void read()
catch (timeoutexception) }}
(2)serialdatareceivedeventhandler委託:
示例用來處理接受的資料。
using system;
using system.io.ports;
class portdatareceived
private static void datareceivedhandler(
object sender,
serialdatareceivedeventargs e)
}
(3)try catch
try-catch 語句由乙個
try塊後跟乙個或多個
catch
子句構成,這些子句指定不同的異常處理程式。
下面是專案的完整**:
using system;
using system.collections.generic;
using system.componentmodel;
using system.data;
using system.drawing;
using system.linq;
using system.text;
using system.threading.tasks;
using system.windows.forms;
using system.io.ports;
namespace 串列埠配置工具
//初始化配置
private void formmain_load(object sender, eventargs e)
cbxcomport.selectedindex = 0;
//列出常用的波特率
cbxbaudrate.items.add("1200");
cbxbaudrate.items.add("2400");
cbxbaudrate.items.add("4800");
cbxbaudrate.items.add("9600");
cbxbaudrate.items.add("19200");
cbxbaudrate.items.add("38400");
cbxbaudrate.items.add("43000");
cbxbaudrate.items.add("56000");
cbxbaudrate.items.add("57600");
cbxbaudrate.items.add("115200");
cbxbaudrate.selectedindex = 3;
//列出停止位
cbxstopbits.items.add("0");
cbxstopbits.items.add("1");
cbxstopbits.items.add("1.5");
cbxstopbits.items.add("2");
cbxstopbits.selectedindex = 1;
//列出奇偶校驗位
cbxparity.items.add("無");
cbxparity.items.add("奇校驗");
cbxparity.items.add("偶校驗");
cbxparity.selectedindex = 0;
//列出資料位
cbxdatabits.items.add("8");
cbxdatabits.items.add("7");
cbxdatabits.items.add("6");
cbxdatabits.items.add("5");
cbxdatabits.selectedindex = 0;
//預設顯示char
rbnchar.checked = true;
}//串列埠檢測
private void btncheckcom_click(object sender, eventargs e)//檢測那些串列埠可用
catch (exception)
}if (comexistence)
else
}/私有函式
/* 檢測串列埠是否設定 */
private bool checkportsetting()
/私有函式
/* 檢測傳送資料 */
private bool checksenddata()
/私有函式
/* 設定串列埠的屬性 */
private void setportproperty()
else if (f == 1.5)
else if (f == 1)
else if (f == 2)
else
sp.databits = convert.toint16(cbxdatabits.text.trim());//設定資料位
string s = cbxparity.text.trim();//設定奇偶位
if (s == "無")
else if (s == "奇校驗")
else if (s == "偶校驗")
else
sp.readtimeout = -1;//設定超時讀取函式
sp.rtsenable = true;
//定義 datareceive 事件
sp.receivedbytesthreshold = 1;
sp.datareceived += new serialdatareceivedeventhandler(sp_datareceived);//該方法載入就執行,
if (rbnhex.checked)
else
}private void sp_datareceived(object sender, serialdatareceivedeventargs e)
else
tbxrecvdata.text += recvdatatext;
}sp.discardinbuffer();
}));
}//開啟串列埠
private void btnopencom_click(object sender, eventargs e)
if (!issetproperty)
trycatch (exception)
}else
catch (exception)}}
//傳送資料
private void btnsend_click(object sender, eventargs e)
catch (exception)
}else
if (!checksenddata())
}//清楚緩衝區
private void btncleandata_click(object sender, eventargs e)}}
編寫基於FormView的SDI串列埠程式
這幾天在使用串列埠除錯助手 scomassistant v2.2 會時不時的出現無法讀出資料。孰,興起自己編寫乙個串列埠軟體。本程式使用mfc框架,所以在使用的使用的時候需要mfc的dll的支援。關於建立mfc程式使用應用程式嚮導即可完成。我們只說運用win api函式操作串列埠的流程。1.建立 e...
編寫基於FormView的SDI串列埠程式
這幾天在使用串列埠除錯助手 scomassistant v2.2 會時不時的出現無法讀出資料。孰,興起自己編寫乙個串列埠軟體。本程式使用mfc框架,所以在使用的使用的時候需要mfc的dll的支援。關於建立mfc程式使用應用程式嚮導即可完成。我們只說運用win api函式操作串列埠的流程。1.建立 e...
C 編寫的串列埠除錯助手
利用c 編寫的串列埠除錯助手,如下圖所示 private stringbuilder builder new stringbuilder 避免在事件處理方法中反覆建立,定義到外面 private long received count 0 接收計數 private long send count 0...