原文:(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;
} }
}

其它相关:
      
转自:http://www.cnblogs.com/jyshi/

(c#2.0)serialPort串口通讯的更多相关文章

  1. serialport串口通讯

    在.NET Framework 2.0中提供了SerialPort类,该类主要实现串口数据通信 = System.IO.Ports.SerialPort.GetPortNames();获取电脑有哪几个 ...

  2. java SerialPort串口通讯的使用

    api文档 http://fazecast.github.io/jSerialComm/javadoc/com/fazecast/jSerialComm/package-summary.html ma ...

  3. modbus串口通讯C#

    简介 公司给的一个小任务,这篇文章进行详细讲解 题目: modbus串口通讯 主要内容如下: 1.实现使用modbus通讯规约的测试软件: 2.具有通信超时功能: 3.分主站从站,并能编辑报文.生成报 ...

  4. Visual studio之C# 串口通讯SerialPort

    背景 App需要串口进行通讯,在此做个记录和简要说明. 正文 添加命名空间 using System.IO.Ports; 实例化串口 SerialPort serialPortO = new Seri ...

  5. Java利用Rxtx进行串口通讯

    最近在做传感器数据采集的工作,底层是基于Zigbee的无线传感网络,所有数据采集到Zigbee协调器上然后通知上位机数据采集完成,上位机通过USB转串口去读取数据就可以了.那么问题来了,如何进行串口通 ...

  6. C#串口通讯概念以及简单实现

    最近在研究串口通讯,其中有几个比较重要的概念,RS-232这种适配于上位机和PC端进行连接,RS-232只限于PC串口和设备间点对点的通信.它很简单的就可以进行连接,由于串口通讯是异步的,也就是说你可 ...

  7. VS编程,C#串口通讯,通过串口读取数据的一种方法

    一.可能需要的软件:1.虚拟串口vspd(Virtual Serial Port Driver,用来在电脑上虚拟出一对串口,模拟通讯. 2.友善串口调试助手,用来发送.读取数据. 二.思路1.查询本机 ...

  8. 树莓派中QT实现串口通讯

    树莓派中QT实现串口通讯 开发平台为QT 此博客QT使用的为WiringPi驱动 我使用的串口调试助手为 cutecom 先简单说一些开发过程中需要注意的问题 Linux 下设备为 tty ,对应在 ...

  9. 简单的Java串口通讯应答示例

    java串口通讯第一次使用,找的资料都比较麻烦,一时没有理出头绪,自己在示例的基础上整理了一个简单的应答示例,比较简陋,但演示了java串口通讯的基本过程. package com.garfield. ...

随机推荐

  1. 原生js判断css3动画过度(transition)结束 transitionend事件 以及关键帧keyframes动画结束(animation)回调函数 animationEnd 以及 css 过渡 transition无效

      上图的 demo 主要讲的 是 css transition的过渡回调函数transitionend事件: css3 的时代,css3--动画 一切皆有可能: 传统的js 可以通过回调函数判断动画 ...

  2. 关于“类不能支持Automation操作”错误的解决方法

    一段程序IE上老是提示“类不支持Automation操作”的错误,IE6.7.8都一样,但是Firefox可以,后来网上找到如下解决方法: 重新注册下以下文件,问题便解决了:msscript.ocxd ...

  3. NET MVC过滤器

    NET MVC过滤器 本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在ASP.NET MVC中有四种过滤器类型

  4. target-action传值

    Target-Action传值 实质就是:A页面要给B页面传值,A就提供接口出去,抓A到B内部来,A间接调用自己内部方法(相当于,A把自己内部需                     要操作的方法, ...

  5. jquery ui tab跳转

    1.tabs_iframe.jsp <%-- Document : tabs Created on : 2015-2-28, 14:44:02 Author : liyulin lyl01099 ...

  6. weighted Kernel k-means 加权核k均值算法理解及其实现(一)

    那就从k-means开始吧 对于机器学习的新手小白来说,k-means算法应该都会接触到吧.传统的k-means算法是一个硬聚类(因为要指定k这个参数啦)算法.这里利用百度的解释 它是数据点到原型的某 ...

  7. 【Java编码准则】の #02不要在client存储未加密的敏感信息

    当构建CS模式的应用程序时,在client側存储敏感信息(比如用户私要信息)可能导致非授权的信息泄漏. 对于Web应用程序来说,最常见的泄漏问题是在client使用cookies存放server端获取 ...

  8. 结构的具体说明sublime text 2/3的Golang开发环境

    1.下载并安装sublime text 2/3 官网下载:http://www.sublimetext.com/ 2.安装成功sublime text后.启动sublime text.选择菜单栏&qu ...

  9. .NET反编译之Reflector

    .NET反编译之Reflector 这几日由于公司需要, 看了些.NET反编译技巧,特地和大家分享下 .NET反编译工具很多,Reflector是其中一个很优秀的工具,所以就用它来进行反编译工作了.今 ...

  10. Async和Await进行异步编程

    使用Async和Await进行异步编程(C#版 适用于VS2015) 你可以使用异步编程来避免你的应用程序的性能瓶颈并且加强总体的响应.然而,用传统的技术来写异步应用是复杂的,同时编写,调试和维护都很 ...