電信類外文翻譯(英文+譯文)----串行通信_第1頁
已閱讀1頁,還剩41頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  附件1:外文資料翻譯譯文</p><p><b>  串行通信</b></p><p>  串行通信的設(shè)備是最古老的溝通機制之一。從IBM個人電腦和兼容式電腦的時代開始,幾乎所有的計算機都配有一個或多個串行端口和一個并行端口。顧名思義,一個串行端口發(fā)送和接收串行數(shù)據(jù),一次一位數(shù)據(jù)。相反,一個并行端口一次發(fā)送和接收8位數(shù)據(jù),使用8個單獨的電線。&l

2、t;/p><p>  提示:要使串行通信工作,你只需要一根三根線的電纜——1根發(fā)送,1根用來接收,1根接地。對于并行通信,你需要采用8條導(dǎo)線。</p><p>  盡管相對較慢的傳輸速度遠低于并行端口,串行端口通信依然因為它簡單的設(shè)備和高的成本效益而是一個受歡迎的連接選項。圖2-1顯示了設(shè)備的使用串口連接部分到計算機。使用串行端口,你可以連接到調(diào)制解調(diào)器,鼠標或設(shè)備等作為一個橋梁/路由器配置的

3、目的</p><p>  圖1:一些常見的串行設(shè)備,調(diào)制解調(diào)器,鼠標和路由器</p><p>  雖然今天的消費產(chǎn)品中在串行連接的地方使用USB連接,但還有很多的設(shè)備使用串行端口作為與外部世界的唯一連接。</p><p>  在這一章中,你將學(xué)習如何使用基于NET Framework2.0和NET Compact Framework2.0的串行通信方式來與其他的串行

4、設(shè)備進行通信。并且,你將建立3個闡述了如何使用串行通信的項目。第一個項目是一個請求允許兩臺電腦(連接使用一個串行電纜或藍牙連接)進行通信的通信申請。在此應(yīng)用程序的基礎(chǔ)上,你可以進行擴展從而與手機等其他外部串行設(shè)備進行通信。你將學(xué)習如何使用AT命令,以編程的方式控制你的手機通過串行藍牙進行連接。第二個項目是一個掌上電腦聊天應(yīng)用程序,這個類似第一個項目。第三個應(yīng)用程序顯示了如何接通全球定位系統(tǒng)接收器,然后提取對于顯示你在地圖上的當前位置有用

5、的數(shù)據(jù)。</p><p>  一些串行通信的基礎(chǔ)知識</p><p>  如前所述,一個串行設(shè)備一次發(fā)送和接收一個位數(shù)據(jù)。有些設(shè)備因為在同一時間發(fā)送和接收數(shù)據(jù),被稱為全雙工設(shè)備。其他可以在任何時間發(fā)送或接收被稱為單雙工。</p><p>  開始傳輸時,設(shè)備先發(fā)送一個起始位,其次是數(shù)據(jù)位。該數(shù)據(jù)位可以是五,六,七,或8位,基于商定而定。兩個發(fā)送方和接收器必須設(shè)置為相

6、同的數(shù)據(jù)通信比特或正確的比特率。數(shù)據(jù)位被發(fā)送完后,就會發(fā)送一個停止位。一個停止位可以是一位,一個半位,或兩位。波特率是數(shù)據(jù)從一個設(shè)備到另一個的傳輸速度。波特率通常以每秒的位數(shù)(bps)來計量。</p><p>  注意:大多數(shù)串行設(shè)備傳輸七,八位數(shù)據(jù)。</p><p>  為了檢測數(shù)據(jù)已被正確發(fā)送,一個可選的校驗位可以同數(shù)據(jù)位在一起。一個校驗位可以是以下內(nèi)容:奇數(shù),偶數(shù),mark,spac

7、e或無(空的奇偶位標志幾乎總是被使用)。使用校驗位提供了一個基本的機制,以檢測已發(fā)送數(shù)據(jù)損壞,但不保證檢查數(shù)據(jù)本身的錯誤。然而,校驗位可用于改善完整性數(shù)據(jù)傳送。</p><p>  大多數(shù)串行端口使用RS232C標準,它指定了一個連接器25針或9針(見圖2)。大多數(shù)系列設(shè)備使用9針連接器。</p><p>  圖2:25針和9針串行接口</p><p><b&

8、gt;  利用串口通信</b></p><p>  你在這一章建立的第一個應(yīng)用程序?qū)⑹且粋€通信應(yīng)用程序。此通信應(yīng)用程序?qū)⒃试S兩個用戶的連接使用串行連接進行通信的計算機。</p><p>  請注意,我提到的是串行連接,而不是串行電纜。這是因為兩個連接的用戶通過藍牙也可以使用這個應(yīng)用程序進行通信。你可以在使用藍牙配對的兩臺計算機之間建立串行連接。</p><p

9、>  最常見的方案是使用零調(diào)制解調(diào)器電纜連接兩臺計算機(見圖3)。</p><p>  圖3:零調(diào)制解調(diào)器電纜</p><p>  圖4顯示了完成的項目。要開始通訊,選擇相應(yīng)的COM串行端口來連接到遠程計算機。單擊連接,然后就準備好通訊了。</p><p>  圖4:選擇一個串口開始通訊</p><p><b>  需要的硬件

10、</b></p><p>  為了測試串行通信,你有以下幾個選擇:</p><p>  計算機到計算機:如上所述,你可以使用零調(diào)制解調(diào)器電纜連接兩臺計算機。</p><p>  單臺計算機:你可以使用一個兩個串口的調(diào)制解調(diào)器電纜連接到同一計算機上。如果你的計算機只有一個串行端口,你可以使用USB到串口轉(zhuǎn)換器轉(zhuǎn)換到USB端口串行端口(詳細信息見下一節(jié)關(guān)于這

11、一點)。</p><p>  藍牙連接:你可以在使用藍牙配對的兩臺計算機之間建立串行連接。</p><p>  USB到串行端口變換器</p><p>  除非你有兩臺計算機,否則你將無法進行串行通訊的測試。但是,你可以使用零調(diào)制解調(diào)器電纜連接到同一計算機上的兩個串行端口模擬兩臺計算機通過串行端口進行通信。但是今天大多數(shù)的電腦都帶有最多一個串口(筆記本電腦和一些甚至

12、沒有一個)。一個好的解決方法是使用USB到串行端口變換器將USB端口轉(zhuǎn)換為串行端口。因此,如果你的電腦沒有任何串行端口,你將需要一對USB到串行端口適配器和一對空調(diào)制解調(diào)器電纜(見圖2-5)。然后,每個USB到串行端口適配器連接到USB端口。</p><p>  圖5:USB到串行端口變換器</p><p>  每個USB到串行端口適配器都有自己的驅(qū)動程序。安裝驅(qū)動程序后,右鍵單擊桌面上的

13、我的電腦,選擇屬性。系統(tǒng)屬性對話框框中,單擊硬件選項卡,單擊設(shè)備管理器按鈕。展開端口(COM和并口)項目,并找到兩個新增加的COM端口(見圖6)。</p><p>  圖6:定位新創(chuàng)建的串行端口</p><p>  在這個例子中,兩個USB串行口分別是COM3和COM4</p><p><b>  藍牙適配器</b></p>&l

14、t;p>  除了使用零調(diào)制解調(diào)器電纜連接兩個串行端口,還可以使用藍牙對兩臺計算機進行配對。我們可以給每臺計算機都配備一個藍牙適配器(見圖7)。然后,就可以給兩臺計算機配對并建立它們之間的串行連接了。</p><p>  注意:請參閱藍牙適配器文件的附帶文件,從而掌握如何為兩個藍牙電腦建立串行連接。</p><p><b>  圖7:藍牙適配器</b></p

15、><p><b>  構(gòu)建聊天應(yīng)用程序</b></p><p>  使用Visual Studio 2005,創(chuàng)建一個新的Windows應(yīng)用程序,并將它命名為SerialCommChat。按照圖8所示填充默認的Form1。</p><p>  圖8:利用各種控件構(gòu)建默認的Form1</p><p>  按照表1所示設(shè)置控件屬

16、性</p><p><b>  表1:</b></p><p>  在NET 2.0中,在工具箱中的Compo-nents標簽的位置(見圖9)有一個新的Windows窗體串口控件。這個串口控件封裝了所有必要的功能,你需要訪問它來使用串行通訊進行通信。你可以拖放一個串口控件到你的項目上或從代碼建立一個(在這個項目里你將使用這個方法)。</p><p&

17、gt;  圖9:工具箱中的串口控件</p><p>  切換到Form1的代碼視圖 來編輯代碼。</p><p><b>  實例化的串口類</b></p><p>  首先,聲明串口成員變量來代表你要使用的串口。</p><p>  Visual Basic 2005</p><p>  Pub

18、lic Class Form1</p><p>  Private WithEvents serialPort As New IO.Ports.SerialPort</p><p><b>  C# 2005</b></p><p>  public partial class Form1 : Form</p><p>

19、<b>  {</b></p><p>  private System.IO.Ports.SerialPort serialPort =</p><p>  new System.IO.Ports.SerialPort();</p><p>  注意:你可以使用如前所述的串口控件,或者使用IO.Ports.SerialPort類;兩者是相同的

20、。</p><p>  請注意,在Visual Basic 2005中,你需要用WithEvents關(guān)鍵字來聲明它。這是因為串口類的DataReceived事件是在數(shù)據(jù)到達時觸發(fā)串行端口的,因此你需要使用這個事件來接收數(shù)據(jù)。對于C#2005, DataReceived事件處理程序?qū)⒈惶砑釉贔orm1_Load事件中。</p><p>  列出所有可用的串行端口名稱</p>&

21、lt;p>  在窗體第一次加載時,將檢索你的計算機上所有可用的串行端口名稱,然后將這些端口名稱送到到ComboBox控件。雙擊表格切換到代碼編輯視圖,F(xiàn)orm1_Load事件處理程序?qū)⒆詣釉谶@里顯示出來。按照如下代碼編輯事件。</p><p>  注意: Visual Studio 2005會為控件自動創(chuàng)建事件的處理程序,如窗體的Load事件或一個按鈕的Click事件(),雙擊控件編輯事件處理程序。<

22、/p><p>  Visual Basic 2005</p><p>  Private Sub Form1_Load( _</p><p>  ByVal sender As System.Object, _</p><p>  ByVal e As System.EventArgs) _</p><p>  Handl

23、es MyBase.Load</p><p>  '---display all the serial port names on the local computer---</p><p>  For i As Integer = 0 To _</p><p>  My.Computer.Ports.SerialPortNames.Count - 1<

24、;/p><p>  cbbCOMPorts.Items.Add( _</p><p>  My.Computer.Ports.SerialPortNames(i))</p><p><b>  Next</b></p><p>  btnDisconnect.Enabled = False</p><p&

25、gt;<b>  End Sub</b></p><p><b>  C# 2005</b></p><p>  private void Form1_Load(object sender, EventArgs e)</p><p><b>  {</b></p><p>  

26、//---set the event handler for the DataReceived event---</p><p>  serialPort.DataReceived += new</p><p>  System.IO.Ports.SerialDataReceivedEventHandler(</p><p>  DataReceived);<

27、/p><p>  //---display all the serial port names on the local</p><p>  // computer---</p><p>  string[] portNames =</p><p>  System.IO.Ports.SerialPort.GetPortNames();</

28、p><p>  for (int i = 0; i <= portNames.Length - 1; i++)</p><p><b>  {</b></p><p>  cbbCOMPorts.Items.Add(portNames[i]);</p><p><b>  }</b></p&

29、gt;<p>  btnDisconnect.Enabled = false;</p><p><b>  }</b></p><p><b>  C#中的事件轉(zhuǎn)移</b></p><p>  在C#版本的Form1_Load事件中,我還增加了一個事件處理程序的串口類的DataReceived事件。在串行口有

30、數(shù)據(jù)輸入時,此事件將被注銷。你不需要在Visual Basic 2005中處理這個事件的程序,因為你可以使用Handles關(guān)鍵字來連接事件的處理程序。</p><p>  //---set the event handler for the DataReceived event---</p><p>  // serialPort.DataReceived += new</p>

31、<p>  // System.IO.Ports.SerialDataReceivedEventHandler(</p><p>  // DataReceived);</p><p>  圖10顯示了ComboBox控件在第一次加載時的外觀。</p><p>  圖10:ComboBox控件在第一次加載時的外觀</p><p>

32、;<b>  打開一個串行口</b></p><p>  一旦一個端口的名稱被選中,用戶點擊連接按鈕時,將會打開選擇的端口。你可以用下面的方法實現(xiàn)這一點。</p><p>  Visual Basic 2005</p><p>  '---Event handler for the Connect button---</p>

33、<p>  Private Sub btnConnect_Click( _</p><p>  ByVal sender As System.Object, _</p><p>  ByVal e As System.EventArgs) _</p><p>  Handles btnConnect.Click</p><p>

34、  '---close the serial port if it is open---</p><p>  If serialPort.IsOpen Then</p><p>  serialPort.Close()</p><p><b>  End If</b></p><p><b>  Try

35、</b></p><p>  '---configure the various parameters of the serial port---</p><p>  With serialPort</p><p>  .PortName = cbbCOMPorts.Text</p><p>  .BaudRate = 9

36、600</p><p>  .Parity = IO.Ports.Parity.None</p><p>  .DataBits = 8</p><p>  .StopBits = IO.Ports.StopBits.One</p><p><b>  End With</b></p><p> 

37、 '---open the serial port---</p><p>  serialPort.Open()</p><p>  '---update the status of the serial port and</p><p>  ' enable/disable the buttons---</p><p&g

38、t;  lblMessage.Text = cbbCOMPorts.Text & " connected."</p><p>  btnConnect.Enabled = False</p><p>  btnDisconnect.Enabled = True</p><p>  Catch ex As Exception</p&g

39、t;<p>  MsgBox(ex.ToString)</p><p><b>  End Try</b></p><p><b>  End Sub</b></p><p><b>  C# 2005</b></p><p>  //---Event handl

40、er for the Connect button---</p><p>  private void btnConnect_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p>  //---close the serial port if it is open---<

41、;/p><p>  if (serialPort.IsOpen)</p><p><b>  {</b></p><p>  serialPort.Close();</p><p><b>  }</b></p><p><b>  try</b></

42、p><p><b>  {</b></p><p>  //---configure the various parameters of the serial</p><p>  // port---</p><p>  serialPort.PortName = cbbCOMPorts.Text;</p>&

43、lt;p>  serialPort.BaudRate = 9600;</p><p>  serialPort.Parity = System.IO.Ports.Parity.None;</p><p>  serialPort.DataBits = 8;</p><p>  serialPort.StopBits = System.IO.Ports.Stop

44、Bits.One;</p><p>  //---open the serial port---</p><p>  serialPort.Open();</p><p>  //---update the status of the serial port and</p><p>  // enable/disable the button

45、s---</p><p>  lblMessage.Text = cbbCOMPorts.Text + " connected.";</p><p>  btnConnect.Enabled = false;</p><p>  btnDisconnect.Enabled = true;</p><p><b>

46、  }</b></p><p>  catch (Exception ex)</p><p><b>  {</b></p><p>  MessageBox.Show(ex.ToString());</p><p><b>  }</b></p><p><

47、;b>  }</b></p><p>  值得注意的是,你需要設(shè)置串口類的各種屬性,如PortName,各種性能,波特率,奇偶校驗等。</p><p>  注意:通信雙方必須具有相同的屬性設(shè)置。也就是說,他們必須有同樣的波特率,奇偶校驗,數(shù)據(jù)位,停止位。</p><p><b>  斷開串口</b></p>&l

48、t;p>  斷開按鈕用來關(guān)閉當前打開的串行端口。</p><p>  Visual Basic 2005</p><p>  '---Event handler for the Disconnect button---</p><p>  Private Sub btnDisconnect_Click( _</p><p>  

49、ByVal sender As System.Object, _</p><p>  ByVal e As System.EventArgs) _</p><p>  Handles btnDisconnect.Click</p><p><b>  Try</b></p><p>  '---close the

50、 serial port---</p><p>  serialPort.Close()</p><p>  '---update the status of the serial port and</p><p>  ' enable/disable the buttons---</p><p>  lblMessage.T

51、ext = serialPort.PortName & " disconnected."</p><p>  btnConnect.Enabled = True</p><p>  btnDisconnect.Enabled = False</p><p>  Catch ex As Exception</p><p&

52、gt;  MsgBox(ex.ToString)</p><p><b>  End Try</b></p><p><b>  End Sub</b></p><p><b>  C# 2005</b></p><p>  //---Event handler for the

53、 Disconnect button---</p><p>  private void btnDisconnect_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p><b>  try</b></p><p><b&g

54、t;  {</b></p><p>  '---close the serial port---</p><p>  serialPort.Close();</p><p>  //---update the status of the serial port and</p><p>  // enable/disable

55、 the buttons---</p><p>  lblMessage.Text = serialPort.PortName +</p><p>  " disconnected.";</p><p>  btnConnect.Enabled = true;</p><p>  btnDisconnect.Enabled

56、 = false;</p><p><b>  }</b></p><p>  catch (Exception ex)</p><p><b>  {</b></p><p>  MessageBox.Show(ex.ToString());</p><p><b&g

57、t;  }</b></p><p><b>  }</b></p><p>  使用串行端口發(fā)送數(shù)據(jù)</p><p>  要通過串口發(fā)送數(shù)據(jù),需要使用串口類的Write()方法。</p><p>  Visual Basic 2005</p><p>  '---Event h

58、andler for the Send button---</p><p>  Private Sub btnSend_Click( _</p><p>  ByVal sender As System.Object, _</p><p>  ByVal e As System.EventArgs) _</p><p>  Handles b

59、tnSend.Click</p><p><b>  Try</b></p><p>  '---write the string to the serial port---</p><p>  serialPort.Write(txtDataToSend.Text & vbCrLf)</p><p> 

60、 '---append the sent string to the TextBox control---</p><p>  With txtDataReceived</p><p>  .AppendText(">" & txtDataToSend.Text & vbCrLf)</p><p>  .Scroll

61、ToCaret()</p><p><b>  End With</b></p><p>  '---clears the TextBox control---</p><p>  txtDataToSend.Text = String.Empty</p><p>  Catch ex As Exception&

62、lt;/p><p>  MsgBox(ex.ToString)</p><p><b>  End Try</b></p><p><b>  End Sub</b></p><p><b>  C# 2005</b></p><p>  //---Even

63、t handler for the Send button---</p><p>  private void btnSend_Click(object sender, EventArgs e)</p><p><b>  {</b></p><p><b>  try</b></p><p>&l

64、t;b>  {</b></p><p>  //---write the string to the serial port---</p><p>  serialPort.Write(txtDataToSend.Text +</p><p>  Environment.NewLine);</p><p>  //---ap

65、pend the sent string to the TextBox control---</p><p>  txtDataReceived.AppendText(">" + txtDataToSend.Text +</p><p>  Environment.NewLine);</p><p>  txtDataReceived.Sc

66、rollToCaret();</p><p>  //---clears the TextBox control---</p><p>  txtDataToSend.Text = string.Empty;</p><p><b>  }</b></p><p>  catch (Exception ex)</p

67、><p><b>  {</b></p><p>  MessageBox.Show(ex.ToString());</p><p><b>  }</b></p><p><b>  } </b></p><p><b>  串口接收數(shù)據(jù)<

68、/b></p><p>  串口類的一個優(yōu)點是,你不必不間斷地查詢傳入的數(shù)據(jù)。相反,你只需要使用提供的DataReceived事件,它會自動檢測到傳入的數(shù)據(jù)并提醒你。但是,由于此事件運行占用一個單獨的線程,任何更新主窗口的企圖都將導(dǎo)致錯誤。因此,你需要在主線程(Form1中)使用委托來更新控件。</p><p>  Visual Basic 2005</p><p

69、>  '---Event handler for the DataReceived event---</p><p>  Private Sub DataReceived( _</p><p>  ByVal sender As Object, _</p><p>  ByVal e As System.IO.Ports.SerialDataRecei

70、vedEventArgs) _</p><p>  Handles serialPort.DataReceived</p><p>  '---invoke the delegate to retrieve the received data---</p><p>  txtDataReceived.BeginInvoke(New _</p>

71、<p>  myDelegate(AddressOf updateTextBox), _</p><p>  New Object() {})</p><p><b>  End Sub</b></p><p><b>  C# 2005</b></p><p>  //---Event

72、handler for the DataReceived event---</p><p>  private void DataReceived(object sender,</p><p>  System.IO.Ports.SerialDataReceivedEventArgs e)</p><p><b>  {</b></p&g

73、t;<p>  //---invoke the delegate to retrieve the received data---</p><p>  txtDataReceived.BeginInvoke(new</p><p>  myDelegate(updateTextBox));</p><p><b>  }</b>&

74、lt;/p><p>  Define the delegate and the updateTextBox() subroutine as follows.</p><p>  Visual Basic 2005</p><p>  '---Delegate and subroutine to update the TextBox control---</

75、p><p>  Public Delegate Sub myDelegate()</p><p>  Public Sub updateTextBox()</p><p>  '---append the received data into the TextBox control---</p><p>  With txtDataRec

76、eived</p><p>  .AppendText(serialPort.ReadExisting)</p><p>  .ScrollToCaret()</p><p><b>  End With</b></p><p><b>  End Sub</b></p><p&

77、gt;<b>  C# 2005</b></p><p>  //---Delegate and subroutine to update the TextBox control---</p><p>  public delegate void myDelegate();</p><p>  public void updateTextBox

78、()</p><p><b>  {</b></p><p>  //---append the received data into the TextBox control---</p><p>  txtDataReceived.AppendText(serialPort.ReadExisting());</p><p&

79、gt;  txtDataReceived.ScrollToCaret();</p><p><b>  }</b></p><p><b>  測試應(yīng)用程序</b></p><p>  現(xiàn)在已經(jīng)準備好了測試應(yīng)用程序。在Visual Studio 2005中按F5調(diào)試該程序。你還需要運行應(yīng)用程序的另一個實例,以測試通訊功能。

80、為此,在你存儲解決方案的Debug文件夾目錄中找到SerialCommChat.exe應(yīng)用程序。</p><p>  在應(yīng)用程序的第一個實例中,選擇端口3(根據(jù)我們計算機的端口號進行選擇,然后檢查計算機上的端口號),然后點擊連接。在其他實例中,選擇端口4,然后點擊連接。你現(xiàn)在可以開始通訊了(見圖11)!</p><p>  圖11:通過兩個串行口通訊</p><p>

81、;  傳輸Unicode字符</p><p>  在默認情況下,串口類發(fā)送ASCII字符。這是在編碼串口類時設(shè)置的。如果你想使用其他語言(如中文交談或日語),你需要設(shè)置串口屬性類的編碼為Unicode,以便可以正確地將數(shù)據(jù)發(fā)送和接收。</p><p>  提示:NET Framework 2.0和最新版本的NET Compact Framework的2.0在你使用ReadExisting(

82、)方法來讀取Unicode字符時不會正確工作。因此,我們不使用ReadExisting()方法來讀取傳入的Unicode字符,而是使用Read()方法。</p><p>  首先,你需要設(shè)置串口類的編碼為Unicode。</p><p>  Visual Basic 2005</p><p>  With serialPort</p><p>

83、;  .PortName = cbbCOMPorts.Text</p><p>  .BaudRate = 9600</p><p>  .Parity = IO.Ports.Parity.None</p><p>  .DataBits = 8</p><p>  .StopBits = IO.Ports.StopBits.One</

84、p><p>  '---set the encoding the Unicode---</p><p>  .Encoding = System.Text.Encoding.Unicode</p><p><b>  End With</b></p><p><b>  C# 2005</b>&

85、lt;/p><p>  serialPort.PortName = cbbCOMPorts.Text;</p><p>  serialPort.BaudRate = 9600;</p><p>  serialPort.Parity = System.IO.Ports.Parity.None;</p><p>  serialPort.Data

86、Bits = 8;</p><p>  serialPort.StopBits = System.IO.Ports.StopBits.One;</p><p>  //---set the encoding the Unicode---</p><p>  serialPort.Encoding = System.Text.Encoding.Unicode;<

87、/p><p>  然后,修改updateTextBox()子例程從而正確讀取傳入的Unicode字符。</p><p>  Visual Basic 2005</p><p>  Public Sub updateTextBox()</p><p>  '---UNICODE work-around---</p><p

88、>  With txtDataReceived</p><p>  '---find out the number of bytes to read---</p><p>  Dim bytesToRead As Integer = serialPort.BytesToRead</p><p>  '---declare a char arra

89、y---</p><p>  Dim ch(bytesToRead) As Char</p><p>  '---read the bytes into the ch array---</p><p>  Dim bytesRead As Integer = 0</p><p>  bytesRead = serialPort.Rea

90、d(ch, 0, bytesToRead)</p><p>  '---convert the ch array into a string---</p><p>  Dim str As String = New String(ch, 0, bytesRead)</p><p>  '---append the received string in

91、to the TextBox control---</p><p>  .AppendText(str)</p><p>  .ScrollToCaret()</p><p><b>  End With</b></p><p><b>  End Sub</b></p><p&

92、gt;<b>  C# 2005</b></p><p>  public void updateTextBox()</p><p><b>  {</b></p><p>  //---UNICODE work-around---</p><p>  //---find out the numbe

93、r of bytes to read---</p><p>  int bytesToRead = serialPort.BytesToRead;</p><p>  //---declare a char array---</p><p>  char[] ch = new char[bytesToRead];</p><p>  int

94、bytesRead = 0;</p><p>  //---read the bytes into the ch array---</p><p>  bytesRead = serialPort.Read(ch, 0, bytesToRead);</p><p>  //---convert the ch array into a string---</p&

95、gt;<p>  string str = new string(ch, 0, bytesRead);</p><p>  //---append the received string into the TextBox</p><p>  // control---</p><p>  txtDataReceived.AppendText(str);

96、</p><p>  txtDataReceived.ScrollToCaret();</p><p><b>  }</b></p><p>  圖12顯示了發(fā)送和接收的中文字符。</p><p>  圖12:發(fā)送和接收的中文字符附件2:外文原文</p><p>  Serial Communi

97、cations</p><p>  Serial communicationis one of the oldest mechanisms for devices to communicate witheach other. Starting with the IBM PC and compatible computers, almost all computers are equipped with one o

98、r more serial ports and one parallel port. As the name implies, a serialport sends and receives data serially, one bit at a time. In contrast, a parallelport sends and receives data eight bits at a time, using eight sepa

99、rate wires.</p><p>  ■ Tip For serial communication to work,you just need a minimum of three wires—one to send,one to receive,and one signal ground.For parallel communication,you need eight wires.</p>

100、<p>  Despite thecomparatively slower transfer speed of serial ports over parallel ports, serial communication remains a popular connectivity option for devices because of its simplicity and cost-effectiveness. Fig

101、ure 2-1 shows some of the devices that use a serial port to connect to the computer. Using a serial port, you can connect to a modem, a mouse, or a device such as a bridge/router for configuration purposes.</p>&l

102、t;p>  Although consumer products today are using USB connections in place of serial connec-</p><p>  tions, still a lot of devices use serial ports as their sole connections to the outside world.</p>

103、;<p>  In thischapter, you will learn how to communicate with other serial devices using the new SerialPortclass available in the .NET Framework 2.0 and the .NET Compact Framework 2.0. In particular, you will buil

104、d three projects that illustrate how to use serial communications. The first project is a chat application that allows two computers (connected using either a serial cable or a Bluetooth connection) to communicate. And u

105、sing the foundation of this application, you can extend it to communicate </p><p>  Some Serial Communication Basics</p><p>  As mentioned, aserial device sends and receives data one bit at a ti

106、me. Some devices can send and receive data at the same time and are known as full-duplexdevices. Others that can either send or receive at any one time are known as single-duplex.</p><p>  To initiate transm

107、ission, a device first transmits a start bit, followed by the data bits. The data bits can be five, six, seven, or eight bits, depending on what has been agreed upon. Both the sender and the receiver must be set to the s

108、ame data bits for communication to take place correctly. Once the data bits are sent, a stop bitis sent. A stop bit can be one, one and a half, and two bits. The baudrateis the speed of transmission of data from one devi

109、ce to another. Baud rate is usually measur</p><p>  ■ Note Most serial devices transmit in seven or eight bits.</p><p>  To detectthat the data has been sent correctly, an optional parity bitcan

110、 be included together with the data bits. A parity bit can be one of the following: odd, even, mark, space, or none (mark and space parity are almost always used). Using a parity bit provides a basic mechanism to detect

111、 corruption of data that was sent and does not guarantee that the data received is free from error. Nevertheless, a parity bit is useful for improving the integrity of the data sent.</p><p>  Most serial por

112、ts adhere to the RS232C standard, which specifies a connector either with 25 pins or with 9 pins (see Figure 2-2). Most serial devices use thenine-pin connector.</p><p>  The mostcommon scenario is to conne

113、ct two computers using a null modem cable (see Figure 2-3).</p><p>  Figure 2-4 showsthe finished project. To start the chat, select the COM number corre- sponding to the serial port that is connected to the

114、 remote computer. Click Connect, and you are readyto talk!</p><p>  Hardware Needed</p><p>  To test serialcommunications, you have a couple of options:</p><p>  Computer to compute

115、r: As mentioned, you can connect two computers using a null modem cable.</p><p>  Single computer: You can connect two serial ports on the same computer using a null modem cable. If your computer has only on

116、e serial port, you can convert a USB port to a serial port using a USB-to-serial-port converter (see the next section for more informa- tion about this).</p><p>  Bluetooth connection: You can create a seria

117、lconnection between two Bluetooth-paired computers.</p><p>  USB-to-Serial-Port Converters</p><p>  Unless youhave two computers, you won’t be able to test serial communications. However, you ca

118、n use a null modem cable to connect two serial ports on the same computer to simulate two computers communicating over serial ports. But most computers today come with at most one serial port (and some notebooks do not e

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論