乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      c#serialport類(lèi)實(shí)現(xiàn)串口通信的源代碼

       orion360doc 2011-01-14
      using System;
      using System.Collections.Generic;
      using System.ComponentModel;
      using System.Data;
      using System.Drawing;
      using System.Text;
      using System.Windows.Forms;
      using System.IO.Ports;
      using System.Threading;

      namespace TestSerialPort
      {
          public partial class frmTESTSerialPort : Form
          {
              public frmTESTSerialPort()
              {
                  InitializeComponent();
                  Control.CheckForIllegalCrossThreadCalls = false;
              }

              private Button button1;
              private TextBox txtSend;
              private TextBox txtReceive;
              private Label label1;
              private Label label2;

              /// <summary>
              /// 必需的設(shè)計(jì)器變量。
              /// </summary>
              private System.ComponentModel.IContainer components = null;

              /// <summary>
              /// 清理所有正在使用的資源。
              /// </summary>
              /// <param name="disposing">如果應(yīng)釋放托管資源,為 true;否則為 false。</param>
              protected override void Dispose(bool disposing)
              {
                  if (disposing && (components != null))
                  {
                      components.Dispose();
                  }
                  base.Dispose(disposing);
              }

              #region Windows 窗體設(shè)計(jì)器生成的代碼

              /// <summary>
              /// 設(shè)計(jì)器支持所需的方法 - 不要
              /// 使用代碼編輯器修改此方法的內(nèi)容。
              /// </summary>
              private void InitializeComponent()
              {
                  this.button1 = new System.Windows.Forms.Button();
                  this.txtSend = new System.Windows.Forms.TextBox();
                  this.txtReceive = new System.Windows.Forms.TextBox();
                  this.label1 = new System.Windows.Forms.Label();
                  this.label2 = new System.Windows.Forms.Label();
                  this.SuspendLayout();
                  //
                  // button1
                  //
                  this.button1.Location = new System.Drawing.Point(440, 379);
                  this.button1.Name = "button1";
                  this.button1.Size = new System.Drawing.Size(75, 23);
                  this.button1.TabIndex = 0;
                  this.button1.Text = "發(fā)送";
                  this.button1.UseVisualStyleBackColor = true;
                  this.button1.Click += new System.EventHandler(this.button1_Click);
                  //
                  // txtSend
                  //
                  this.txtSend.Location = new System.Drawing.Point(59, 12);
                  this.txtSend.Multiline = true;
                  this.txtSend.Name = "txtSend";
                  this.txtSend.Size = new System.Drawing.Size(456, 164);
                  this.txtSend.TabIndex = 2;
                  //
                  // txtReceive
                  //
                  this.txtReceive.Location = new System.Drawing.Point(59, 200);
                  this.txtReceive.Multiline = true;
                  this.txtReceive.Name = "txtReceive";
                  this.txtReceive.Size = new System.Drawing.Size(456, 164);
                  this.txtReceive.TabIndex = 2;
                  //
                  // label1
                  //
                  this.label1.Location = new System.Drawing.Point(13, 15);
                  this.label1.Name = "label1";
                  this.label1.Size = new System.Drawing.Size(41, 12);
                  this.label1.TabIndex = 0;
                  this.label1.Text = "發(fā)送";
                  //
                  // label2
                  //
                  this.label2.Location = new System.Drawing.Point(13, 213);
                  this.label2.Name = "label2";
                  this.label2.Size = new System.Drawing.Size(41, 12);
                  this.label2.TabIndex = 0;
                  this.label2.Text = "接收";
                  //
                  // frmTESTSerialPort
                  //
                  this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
                  this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                  this.ClientSize = new System.Drawing.Size(546, 434);
                  this.Controls.Add(this.label2);
                  this.Controls.Add(this.label1);
                  this.Controls.Add(this.txtReceive);
                  this.Controls.Add(this.txtSend);
                  this.Controls.Add(this.button1);
                  this.Name = "frmTESTSerialPort";
                  this.Text = "串口試驗(yàn)";
                  this.ResumeLayout(false);
                  this.PerformLayout();

              }

              #endregion
      private void button1_Click(object sender, EventArgs e)
              {
                  //實(shí)例化串口對(duì)象(默認(rèn):COMM1,9600,e,8,1)            
                  SerialPort serialPort1 = new SerialPort();
                  //更改參數(shù)
                  serialPort1.PortName = "COM1";
                  serialPort1.BaudRate = 19200;
                  serialPort1.Parity = Parity.Odd;
                  serialPort1.StopBits = StopBits.Two;

                  //上述步驟可以用在實(shí)例化時(shí)調(diào)用SerialPort類(lèi)的重載構(gòu)造函數(shù)
                  //SerialPort serialPort = new SerialPort("COM1", 19200, Parity.Odd, StopBits.Two);

                  //打開(kāi)串口(打開(kāi)串口后不能修改端口名,波特率等參數(shù),修改參數(shù)要在串口關(guān)閉后修改)
                  serialPort1.Open();

                  //發(fā)送數(shù)據(jù)
                  SendStringData(serialPort1);
                  //也可用字節(jié)的形式發(fā)送數(shù)據(jù)
                  //SendBytesData(serialPort1);
                  
                  //開(kāi)啟接收數(shù)據(jù)線程
                  ReceiveData(serialPort1);
                  
              }

              

              //發(fā)送字符串?dāng)?shù)據(jù)
              private void SendStringData(SerialPort serialPort)
              {
                  serialPort.Write(txtSend.Text);
              }

              /// <summary>
              /// 開(kāi)啟接收數(shù)據(jù)線程
              /// </summary>
              private void ReceiveData(SerialPort serialPort)
              {
                  //同步阻塞接收數(shù)據(jù)線程
                  Thread threadReceive=new Thread(new ParameterizedThreadStart(SynReceiveData));
                  threadReceive.Start(serialPort);
                  
                   //也可用異步接收數(shù)據(jù)線程
                  //Thread threadReceiveSub = new Thread(new ParameterizedThreadStart(AsyReceiveData));
                  //threadReceiveSub.Start(serialPort);
                  
              }

              //發(fā)送二進(jìn)制數(shù)據(jù)
              private void SendBytesData(SerialPort serialPort)
              {
                  byte[] bytesSend=System.Text.Encoding.Default.GetBytes(txtSend.Text );
                  serialPort.Write(bytesSend, 0, bytesSend.Length);
              }

              //同步阻塞讀取
              private void SynReceiveData(object serialPortobj)
              {
                  SerialPort serialPort = (SerialPort)serialPortobj;
                  System.Threading.Thread.Sleep(0);
                  serialPort.ReadTimeout = 1000;
                  try
                  {
                      //阻塞到讀取數(shù)據(jù)或超時(shí)(這里為2秒)
                      byte firstByte=Convert.ToByte(serialPort.ReadByte());
                      int bytesRead=serialPort.BytesToRead ;               
                      byte[] bytesData=new byte[bytesRead+1];
                      bytesData[0] = firstByte;
                      for (int i = 1; i <=bytesRead; i++)
                          bytesData = Convert.ToByte( serialPort.ReadByte());
                      txtReceive.Text = System.Text.Encoding.Default.GetString(bytesData);
                  }
                  catch(Exception e)
                  {
                      MessageBox.Show(e.Message);
                      //處理超時(shí)錯(cuò)誤
                  }
                  
                  serialPort.Close();

              }

              //異步讀取
              private void AsyReceiveData(object serialPortobj)
              {
                  SerialPort serialPort = (SerialPort)serialPortobj;
                  System.Threading.Thread.Sleep(500);
                  try
                  {
                       txtReceive.Text =   serialPort.ReadExisting();
                  }
                  catch (Exception e)
                  {
                      MessageBox.Show(e.Message);
                      //處理錯(cuò)誤
                  }
                  serialPort.Close();
              }

          }


          static class Program
          {
              /// <summary>
              /// 應(yīng)用程序的主入口點(diǎn)。
              /// </summary>
              [STAThread]
              static void Main()
              {
                  Application.EnableVisualStyles();
                  Application.SetCompatibleTextRenderingDefault(false);
                  Application.Run(new frmTESTSerialPort());
              }
          }

      }

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類(lèi)似文章 更多