串列埠通訊與NJH框架

2022-04-01 20:19:14 字數 3329 閱讀 3151

njh框架

1

public

class

baseserialport

16private encoding encoding;//

字元編碼

17#endregion

1819

#region 建構函式

20///

21///

使用位元組型通訊協議呼叫此建構函式

22///

23///

串列埠名24

///波特率

25///

資料位26

///停止位

27///

奇偶校驗

28public baseserialport(string portname, int baudrate, int

databits, stopbits stopbits, parity parity)

38///

39///

使用字串型通訊協議呼叫此建構函式

40///

41///

串列埠名42

///波特率

43///

資料位44

///停止位

45///

奇偶校驗

46public baseserialport(string portname, int baudrate, int

databits, stopbits stopbits, parity parity, encoding encoding)

56#endregion

5758

#region 連線裝置

59public

void

connect() 64}

65catch

已被占用或被拒絕訪問

",this

._device.portname));67}

68}69#endregion

7071

#region 關閉連線

72public

void

close() 76}

77#endregion

7879

#region 接收資料

80public

void device_datareceived(object

sender, serialdatareceivedeventargs e)

9091

byte msg = new

byte

[startindex];

92array.copy(buff, msg, startindex);

9394

if (this.encoding == null

) 97

else

101waiterforrsp.set();

102}

103}

104}

105#endregion

106107

#region 傳送訊息

108public

void sendmsg(byte

msg)

112113

public

void sendmsg(string

msg)

118#endregion

119120

#region 原子操作

121///

122///

接收裝置的響應訊息(位元組型通訊協議)

123///

124///

等待裝置回覆的最大時長

125///

收到的裝置的回覆

126///

127public

bool recvrsp(int timeout, out

byte

msg)

134///

135///

接收裝置的響應訊息(字元型通訊協議)

136///

137///

等待裝置回覆的最大時長

138///

收到的裝置的回覆

139///

140public

bool recvrsp(int timeout, out

string

msg)

145146

public

void

occupyroute()

150151

public

void

abandonroute()

154#endregion

155 }

view code

使用方法:

1,適用場景

上位機和裝置通過協議傳送和接收資料互動,從而達到上位機控制裝置的目的。

2,使用方法

(1)示例

現在有個需求:上位機軟體包括乙個點膠機控制器,用來控制點膠機的開始吐膠,停止吐膠,真空壓力值等行為。

///

///點膠機控制器

/// class

dispensercontroler

//吐膠

public

void

tujiao()

else

port.abandonroute();

}public

void

shutdown()

}

(2)首先建立乙個「控制器」類。

(3)建立乙個baseserialport例項,作為控制器的通訊工具。

(4)根據通訊協議是位元組型還是字串型,選用不同的建構函式建立baseserialport例項。

(5)public void occupyroute()     public void abandonroute() 兩個函式極為重要;

一.保證乙個由若干指令組合而成的互動過程的連貫性

occupyroute();

send();//不需要回覆的指令

send();//需要回覆的指令

recvrsp();//處理回覆

abandonroute();

二,每條指令的開頭和結尾

occupyroute();

send();//需要回覆的指令

recvrsp();//處理回覆

abandonroute();

含義:傳送完指令,處理裝置的回覆,然後讓出 串列埠接收資料的唯一快取,允許其他指令和裝置互動。

三,recvrsp()的使用方法

檢查返回值,若false,表示規定時間內未收到裝置的回覆,rsp超時。

檢查返回值,若true,則使用recvrsp()傳出的接收到的資料。

串列埠與socket通訊

到資訊。對於那種需要很長時間才能完成的操作來說,重疊i o機制尤其有用,因為發起 重疊操作的執行緒在重疊請求發出後就可以自由地做別的事情了。在windows nt 2000上,提供真正可擴充套件的i o模型就是使用完成埠 completion port 的重疊i o。可以把完成埠看成系統維護的乙個佇...

串列埠與socket通訊

2.完成埠建立成功後,在socket和完成埠之間建立關聯。再次呼叫createiocompletionport 函式,這一次在第1個引數filehandle傳入建立的socket控制代碼,引數existingcompletionport 為已經建立的完成埠控制代碼。以下 建立了乙個socket並把它...

串列埠通訊 串列埠通訊原理

1 rs232介面 rs232 c介面聯結器一般使用型號為db 9的9芯插頭座,只需3條介面線,即 傳送資料 接收資料 和 訊號地 即可傳輸資料,其9個引腳的定義如圖11 3所示。圖11 3 rs232 c介面聯結器定義 在rs232的規範中,電壓值在 3v 15v 一般使用 6v 稱為 0 或 o...