(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串口通讯的更多相关文章
- serialport串口通讯
在.NET Framework 2.0中提供了SerialPort类,该类主要实现串口数据通信 = System.IO.Ports.SerialPort.GetPortNames();获取电脑有哪几个 ...
- java SerialPort串口通讯的使用
api文档 http://fazecast.github.io/jSerialComm/javadoc/com/fazecast/jSerialComm/package-summary.html ma ...
- modbus串口通讯C#
简介 公司给的一个小任务,这篇文章进行详细讲解 题目: modbus串口通讯 主要内容如下: 1.实现使用modbus通讯规约的测试软件: 2.具有通信超时功能: 3.分主站从站,并能编辑报文.生成报 ...
- Visual studio之C# 串口通讯SerialPort
背景 App需要串口进行通讯,在此做个记录和简要说明. 正文 添加命名空间 using System.IO.Ports; 实例化串口 SerialPort serialPortO = new Seri ...
- Java利用Rxtx进行串口通讯
最近在做传感器数据采集的工作,底层是基于Zigbee的无线传感网络,所有数据采集到Zigbee协调器上然后通知上位机数据采集完成,上位机通过USB转串口去读取数据就可以了.那么问题来了,如何进行串口通 ...
- C#串口通讯概念以及简单实现
最近在研究串口通讯,其中有几个比较重要的概念,RS-232这种适配于上位机和PC端进行连接,RS-232只限于PC串口和设备间点对点的通信.它很简单的就可以进行连接,由于串口通讯是异步的,也就是说你可 ...
- VS编程,C#串口通讯,通过串口读取数据的一种方法
一.可能需要的软件:1.虚拟串口vspd(Virtual Serial Port Driver,用来在电脑上虚拟出一对串口,模拟通讯. 2.友善串口调试助手,用来发送.读取数据. 二.思路1.查询本机 ...
- 树莓派中QT实现串口通讯
树莓派中QT实现串口通讯 开发平台为QT 此博客QT使用的为WiringPi驱动 我使用的串口调试助手为 cutecom 先简单说一些开发过程中需要注意的问题 Linux 下设备为 tty ,对应在 ...
- 简单的Java串口通讯应答示例
java串口通讯第一次使用,找的资料都比较麻烦,一时没有理出头绪,自己在示例的基础上整理了一个简单的应答示例,比较简陋,但演示了java串口通讯的基本过程. package com.garfield. ...
随机推荐
- C++该函数隐藏
只有基类成员函数的定义已声明virtualkeyword,当在派生类中的时间,以支付功能实现,virtualkeyword可以从时间被添加以增加.它不影响多状态. easy混淆视听,掩盖: ,规则例如 ...
- 如何设置ubuntu自己主动的睡眠时间
我相信很多在学习linux的过程中.总会遇到,不时系统会冬眠自己主动,因此,即使再次输入password.么重要的内容怕别人看 另外假设你常常使用像Putty这样子的远程登录软件的话,假设你的linu ...
- Windows Server 2012启用Windows功能NetFx3时出错解决方法
作者:冰点阳光 | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明网址:http://baohua.me/operating-system/windows-server-2012- ...
- 简单vector达到
得知c++于,看完这本书后,,最近苦于不知道下一步该怎么做了,在寻找STL在各种容器的源代码分析,我想一次又一次地实现它. 之前,很多问题看的时候不知道是怎么回事,意与理解的.这个vector类写得特 ...
- MEMO:UIButton 中的图片和标题 左对齐
UIButton setImage 和 setTitle之后.默认 image和title 对齐居中, 因为 title 长度不固定. 所以假设要几个这样有image有title的button纵向排列 ...
- Team Foundation Server 2015使用教程--新增权限为读取器的团队
- SQL SERVER 内存分配及常见内存问题(1)——简介
原文:SQL SERVER 内存分配及常见内存问题(1)--简介 一.问题: 1.SQL Server 所占用内存数量从启动以后就不断地增加: 首先,作为成熟的产品,内存溢出的机会微乎其微.对此要了解 ...
- OpenGL缓冲区
OpenGL缓冲区 颜色缓冲区 OpenGL时,先是在一个缓冲区中完毕渲染,然后再把渲染结果交换到屏幕上. 我们把这两个缓冲区称为前颜色缓冲区(屏幕)和后颜色缓冲区.在默认情况下,OpenGL命令是在 ...
- IIS 7.0 Features and Vista Editions
原文 IIS 7.0 Features and Vista Editions Overview of IIS 7.0 differences Across Windows Vista Editions ...
- springMVC+angular+bootstrap+mysql的简易购物网站搭建
springMVC+angular+bootstrap+mysql的简易购物网站搭建 介绍 前端的css框架用了bootstrap, 以及bootstrap的JS组件, 以及很好用的angular(a ...