原文:(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. UVA 257 - Palinwords(弦HASH)

    UVA 257 - Palinwords 题目链接 题意:输出一个文本里面的palinword,palinword的定义为.包括两个不同的回文子串,而且要求回文子串不能互相包括 思路:对于每一个单词推 ...

  2. mfc 链接时错误 文件函数重复定义

    我在HeaderFile里新建了一个函数,然后在程序里调用,一直出现这个错误,说这个函数重复定义, 发现是VS自动加到External dependencies里面了.把HeaderFile里的函数文 ...

  3. Log4j配置文件位置+Spring数据源配置文件位置

    一个.Log4j配置文件位置 1.加载自己主动 当应用程序启动,缺省情况下,这将是src文件夹搜索log4j.xml型材.如果不存在.我们将继续寻找log4j.properties文件,仅仅要找到当中 ...

  4. 微信oauth获取用户的信息页面授权

    參考链接(请在微信client中打开此链接体验) Scope为snsapi_base https://open.weixin.qq.com/connect/oauth2/authorize?appid ...

  5. Android中集成第三方库的方法和问题

    Android中集成第三方库的方法和问题 声明: 1. 本文參考了网上同学们的现有成果,在此表示感谢,參考资料在文后有链接. 2. 本文的重点在第三部分,是在开发中遇到的问题及解决的方法.第一,第二部 ...

  6. T-SQL性能调整——信息收集

    原文:T-SQL性能调整--信息收集 IO信息(自服务器启动开始) --Database IO analysis WITH IOFORDATABASE AS ( SELECT DB_NAME(VFS. ...

  7. MYSQL C API 记录

    一.环境与条件 MySQL AB 提供了C API,能够提供低等级界面,负责完毕涉及SQLserver交互的大多数常规任务:数据库连接 .查询.结果集处理和错误处置.C API通过两个组件实现: 头文 ...

  8. 一个关于Linux Bridge配置的吐嘈

    话说有些事情十分适合在放假前的一天折腾一天,但绝对不适合在你准备去吃饭前多看一眼...我上周就碰到了这么一件揪心的事,终于以低血糖收场.十分狼狈地四处觅食,却觅到了一包超级辣的鸡爪.吃完后感觉症状加重 ...

  9. IIS 7.0 Features and Vista Editions

    原文 IIS 7.0 Features and Vista Editions Overview of IIS 7.0 differences Across Windows Vista Editions ...

  10. 30分钟让你了解MongoDB基本操作(转)

    今天记录下MongoDB的基本操作,这只是最基本的,所以是应该掌握的. 数据库 数据库是一个物理容器集合.每个数据库都有自己的一套文件系统上的文件.一个单一的MongoDB服务器通常有多个数据库. 集 ...