C 編寫串列埠程式

2021-08-10 18:21:35 字數 3824 閱讀 8188

下面闡述一下幾點:

(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...