• (c#2.0)serialPort串口通讯


    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.Configuration;
    using System.IO;
    using System.IO.Ports;

    namespace WindowsApplication2
    {
         public partial class Form1 : Form
         {
             public Form1()
             {
                 InitializeComponent();
             }

             int iCount;
             int numbers;
             byte rlenth;
             bool bRLenth;
             int bRStart;
             bool bRParam;
             byte Rchk;
             int LParam;
             byte[] RParam;
             bool brcmd;
             byte RCmd;
             bool bRchk;
             bool bfinish;
             private void Form1_Load(object sender, EventArgs e)
             {
                
                 //Form1 Form1 = new Form1();
                 try
                 {
                 if (this.serialPort1.IsOpen)
                 {
                     serialPort1.Close();
                 }
                 else
                 {
                     serialPort1.PortName = "COM1"; //选择串口COM1
                     serialPort1.BaudRate = 9600;    //设置通信口参数
                     serialPort1.DataBits = 8;       //数据位
                     serialPort1.Parity = System.IO.Ports.Parity.None;//校验位 无校验
                     serialPort1.StopBits = System.IO.Ports.StopBits.One;//停止位1位
                     serialPort1.ReadBufferSize = 1024;                  //接收缓冲区大小
                     serialPort1.WriteBufferSize = 1024;                 //发送缓冲区大小
                     serialPort1.Open();
                     serialPort1.ReadExisting();                         //设置Input从接收缓冲读取全部数据
                     serialPort1.ReceivedBytesThreshold = 1;             //设置引发OnComm事件的字节长度
                     serialPort1.DiscardInBuffer() ;                     //清除接收缓冲区
                     serialPort1.DiscardOutBuffer() ;                    //清除发送缓冲区

                 }
                
                     string connstr = System.Configuration.ConfigurationManager.AppSettings["myConnectionString"];
                     SqlConnection conn = new SqlConnection(connstr);
                     conn.Open();
                     string sql = "select   name   as 时间,price,card from test01";
                     SqlDataAdapter da = new SqlDataAdapter(sql, conn);
                     DataSet ds = new DataSet();
                     da.Fill(ds, "baomin");

                     ultraChart1.DataSource = ds.Tables[0].DefaultView;
                     dataGridView1.DataSource = ds.Tables[0].DefaultView;
                     ultraChart1.Axis.Y.LogBase = 1000;
                     ultraChart1.Axis.Y.RangeMax = 30000;
                     ultraChart1.Axis.Y.RangeMin = 0;
                     Application.EnableVisualStyles();
                     Application.DoEvents();
                 }
                 catch (Exception ex)
                 {
                     MessageBox.Show("dd",ex.Message,MessageBoxButtons.OK,MessageBoxIcon.Error);
                 }
                 //ultraChart1.

             }
             /// <summary>
             /// 取前后存储器两个值对比,应付电脑异常退出
             /// </summary>
             /// <param name="sender">XOR异域校验</param>
             /// <param name="e"></param>
             private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
             {    
                
                 try
                 {
                     //Byte[] dataread = new Byte[8] ;

                    
                     //serialPort1.Read(dataread, 0, dataread.Length);
                     //int productline=dataread[0]; //接口号
                     //iCount=dataread[5];
                     string connstr = System.Configuration.ConfigurationManager.AppSettings["myConnectionString"];
                     SqlConnection conn = new SqlConnection(connstr);
                     conn.Open();


                     //if (dataread[0] == 0xAA)
                     //{
                     //    // MessageBox.Show(productline.ToString(), "ddd", MessageBoxButtons.OK, MessageBoxIcon.Error);
                     //     numbers = 0;
                     //     numbers = Convert.ToInt32(dataread[4]) * 256 ^ 1 + Convert.ToInt32(dataread[5]);

                     //     numbers = Convert.ToInt32(dataread[4]) * Convert.ToInt32(System.Math.Pow(256, 1)) + Convert.ToInt32(dataread[5]);
                     //     SqlCommand cmd = new SqlCommand("SP_SC_IN_AUTONUMBER", conn);
                     //     cmd.CommandType = CommandType.StoredProcedure;
                     //     cmd.Parameters.Add("@quantity", SqlDbType.Int);
                     //     cmd.Parameters["@quantity"].Value = numbers;
                     //     cmd.Parameters.Add("@ports", SqlDbType.Int);
                     //     cmd.Parameters["@ports"].Value = dataread[3];
                     //     cmd.ExecuteNonQuery();
                     //}

                     byte[] DataRead;
                     int bytData ;
                     int bytnum;


                     //bytnum = serialPort1.ReadByte; ;
                    

                   
                     // TODO: NotImplemented statement: ICSharpCode.SharpRefactory.Parser.AST.VB.OnErrorStatement
                     if (serialPort1.ReceivedBytesThreshold == serialPort1.ReceivedBytesThreshold)
                     {
                         bytnum = serialPort1.BytesToRead;
                         DataRead = new byte[bytnum];
                         // TODO: NotImplemented statement: ICSharpCode.SharpRefactory.Parser.AST.VB.ReDimStatement
                         for (int k = 0; k <= (bytnum - 1); k++)
                         {
                             bytData= serialPort1.ReadByte();
                             DataRead[k] =(byte) bytData;
                             bfinish = RFJ(DataRead[k]);
                             if (bfinish)
                             {
                                 //System.Convert.ToInt32(RCmd)为端口号
                                 iCount = 0;
                                 for (int j = 0; j <= 1; j++)
                                 {
                                     iCount += System.Convert.ToInt32(RParam[j]) * Convert.ToInt32(Math.Pow(256, j));
                                 }

                                 SqlCommand cmd = new SqlCommand("SP_SC_IN_AUTONUMBER", conn);
                                 cmd.CommandType = CommandType.StoredProcedure;
                                 cmd.Parameters.Add("@quantity", SqlDbType.Int);
                                 cmd.Parameters["@quantity"].Value = iCount;
                                 cmd.Parameters.Add("@ports", SqlDbType.Int);
                                 cmd.Parameters["@ports"].Value = System.Convert.ToInt32(RCmd);
                                 cmd.ExecuteNonQuery();

                             }
                         }
                     }

                    
                    
                 }
                 catch (IOException ex)      
                 {
                     throw (ex);
                 }

             }

             private void timer1_Tick(object sender, EventArgs e)
             {
                 //this.Opacity -= -0.1;
                 //if (this.Opacity==0)
                 //{
                 //     timer1.Enabled = false;
                 //     this.Close();
                 //}
             }

             private void Form1_FormClosing(object sender, FormClosingEventArgs e)
             {
                 Win32.AnimateWindow(this.Handle, 2500, Win32.AW_SLIDE | Win32.AW_HIDE | Win32.AW_BLEND);
                 // e.Cancel = true;

                 //timer1.Enabled = true;
             }

             private void Btn_OK_Click(object sender, EventArgs e)
             {
                 popupNotifier1.Popup();
             }

             private bool RFJ(byte Data)
             {
                 bool result=false;
                 if (bRStart == 0)
                 {
                     if (Data == 0xAA)
                     {
                         bRStart = 1;
                     }
                 }
                 else if   (bRStart == 1)
                 {
                     if (Data == 0x55)
                     {
                         bRStart = 2;
                     }
                     else if (Data == 0xAA)
                     {
                         bRStart = 1;
                     }
                     else
                     {
                         bRStart = 0;
                     }
                 }
                 else if (bRLenth == false)
                 {
                     if (Data < 20)
                     {
                         bRLenth = true;
                          rlenth = Data;
                          Rchk = Data;
                          LParam = (int)(rlenth) - 3;
                         RParam = new byte[2];

                     }
                     else
                     {
                         bRStart = 0;
                     }
                 }
                 else if (brcmd == false)
                  {
                     brcmd = true;
                     RCmd = Data;
                     Rchk = (byte)(Rchk ^ Data);
                  }
                  else if (bRParam == false)
                 {
                     if (LParam >= 0)
                     {
                         RParam[LParam] = Data;
                         Rchk = (byte)(Rchk ^ Data);
                         LParam = LParam - 1;
                     }
                     if (LParam < 0)
                     {
                         bRParam = true;
                     }
                    
                 }
                 else if (bRchk == false)
                 {
                     if (Rchk == Data)
                     {
                         result = true;
                     }
                     else
                     {
                         bRStart = 0;
                         bRLenth = false;
                         brcmd = false;
                         bRParam = false;
                     }
                 }


                 return result;
             }


         }
    }

  • 相关阅读:
    Java 连接Redis客户端 Jedis
    Redis的基本类型
    [Windows Server 2008] 搭建数据云备份
    [Windows Server 2008] PHP安装Memcached
    五大免费主机系统
    当前主要的常用的PHP环境部署套件比较
    [Windows Server 2008] 404错误设置方法
    [Windows Server 2008] IIS配置伪静态方法(Web.config模式的IIS rewrite)
    护卫神·云查杀系统V4.0-安全检测部分
    [Windows Server 2008] 阿里云.云主机忘记密码解决方法
  • 原文地址:https://www.cnblogs.com/jcomet/p/1251060.html
Copyright © 2020-2023  润新知