原文:(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. HDU 2008 数字统计

    号码值统计 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Subm ...

  2. D其他项目打电话AL工程EF Model

     Based on your description and the error code, you will just need to ensure that your DataContext ...

  3. IOC/DI的基本思想

    IOC/DI的基本思想 1.把程序之间的依赖关系去掉 2.把程序对象设置到IOC/DI容器的配置中作为Bean 3.由IOC/D.容器来管理Bean的创建和实例化 4.由IOC/DI容器来把Bean之 ...

  4. ORM武器:NHibernate(三)五个步骤+简单对象CRUD+HQL

    前面的两篇文章中.我们对NHibernate已经做了大致了解 <ORM利器:NHibernate(一)简单介绍>Nhibernate的作用:攻克了对象和数据库的转化问题 <ORM利器 ...

  5. Centos 6.5下一个SNMP简单配置(snmp protocol v3,监控宝)

    Centos 6.5下一个SNMP简单配置(snmp protocol v3.监控宝) jom_ch@2014/7/25 1,安装 >yum -y install net-snmp net-sn ...

  6. linux添加到普通用户sudo才干

    在超级用户模式添加到普通用户sudo才干 1. su -(进root用户) 2. chmod u+w /etc/sudoer 3. vim /etc/sudoers 于root ALL=(ALL) A ...

  7. 使用shell命令分析统计日志

    用户需要登录统计信息,当分析用户行为,使用shell通常可以很容易地取出了大量的数据.删除,然后放入excel统计. 例如:统计日志含有loadCustomProcess这个地址的訪问,按訪问耗时排序 ...

  8. dirname

    dirname 命令来删除文件路径中最后一个/以及一些背后.当文件通常能够得到一个文件夹. 实例: dean@dean-Latitude-3330:~$ dirname /usr/bin/ /usr ...

  9. dom 规划(html和xml)

    html dom与xml dom关联: 什么是 DOM? DOM 是 W3C(万维网联盟)的标准. DOM 定义了訪问 HTML 和 XML 文档的标准: "W3C 文档对象模型 (DOM) ...

  10. Cocos2d-x 2.2.3 Android配置

    今天总结出来的部署流程,已经成功把自己的项目编译到android真机上.省去了安装ndk等步骤 环境: win7 64位 1.导入项目到eclipse 2.导入libcocos2dx 样例:C:\co ...