c# 实现串口编程-操作LED屏幕
串口编程主要用到SerialPort这个类,主要实现对串口发送字节数组然后点阵屏显示相关信息,其实这个功能很简单下面给大家把整体思路用流程图展现如下:、

其实整体思路就如流程图。下面是整个流程图的一个实现代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO.Ports;
using System.Threading; namespace portchart
{
class Serilaztion
{
SerialPort _serialPort;
public Serilaztion(string com)
{
_serialPort = new SerialPort();
_serialPort.PortName = com;
_serialPort.BaudRate = ;
_serialPort.Parity = Parity.None;
_serialPort.DataBits = ;
_serialPort.StopBits = StopBits.One;
_serialPort.ReadBufferSize = ;
_serialPort.Handshake = Handshake.None;
_serialPort.ReadTimeout = ;
_serialPort.WriteTimeout = ;
_serialPort.Open();
}
private static byte[] strToToHexByte(string hexString)
{
hexString = hexString.Replace(" ", "");
if ((hexString.Length % ) != )
hexString += " ";
byte[] returnBytes = new byte[hexString.Length / ];
for (int i = ; i < returnBytes.Length; i++)
returnBytes[i] = Convert.ToByte(hexString.Substring(i * , ), );
return returnBytes;
}
public static string StringToHexString(string s, Encoding encode)
{
byte[] b = encode.GetBytes(s);//按照指定编码将string编程字节数组
string result = string.Empty;
for (int i = ; i < b.Length; i++)//逐字节变为16进制字符,以%隔开
{
result += Convert.ToString(b[i], ); }
return result;
} public void SendMessage(string message, string com,string type)
{
System.Text.Encoding GB2312 = System.Text.Encoding.GetEncoding("GB2312");
message = message.Trim();
string kzm = "1B0104"; //开始码
string hh = StringToHexString(message, GB2312);
string js = "0D00"; //结束码
string zf = kzm + hh + js;
string s = "1B010320202020C7EB20C9CF20CFDF202020200D00"; byte[] by = strToToHexByte(zf);
byte[] bt = strToToHexByte(s); _serialPort.Write(by, , by.Length);
_serialPort.Write(bt, , bt.Length); }
public void Close()
{
_serialPort.Close();
}
public static string SetPortName(string defaultPortName)
{
string portName; Console.WriteLine("验证端口:");
foreach (string s in SerialPort.GetPortNames())
{
Console.WriteLine(" {0}", s);
} Console.Write("请输入Com端口(默认: {0}): ", defaultPortName);
portName = Console.ReadLine(); if (portName == "" || !(portName.ToLower()).StartsWith("com"))
{
portName = defaultPortName;
}
return portName;
} public static int SetPortBaudRate(int defaultPortBaudRate)
{
string baudRate; Console.Write("设置波特率(默认:{0}): ", defaultPortBaudRate);
baudRate = Console.ReadLine(); if (baudRate == "")
{
baudRate = defaultPortBaudRate.ToString();
} return int.Parse(baudRate);
} public static Parity SetPortParity(Parity defaultPortParity)
{
string parity; Console.WriteLine("验证奇偶校验位:");
foreach (string s in Enum.GetNames(typeof(Parity)))
{
Console.WriteLine(" {0}", s);
} Console.Write("进入校验位 (默认: {0}):", defaultPortParity.ToString(), true);
parity = Console.ReadLine(); if (parity == "")
{
parity = defaultPortParity.ToString();
} return (Parity)Enum.Parse(typeof(Parity), parity, true);
} public static int SetPortDataBits(int defaultPortDataBits)
{
string dataBits;
Console.Write("设置每个字节的标准数据位长度 (默认: {0}): ", defaultPortDataBits);
dataBits = Console.ReadLine();
if (dataBits == "")
{
dataBits = defaultPortDataBits.ToString();
}
return int.Parse(dataBits.ToUpperInvariant());
} public static StopBits SetPortStopBits(StopBits defaultPortStopBits)
{
string stopBits;
Console.WriteLine("设置每个字节的标准停止位数:");
foreach (string s in Enum.GetNames(typeof(StopBits)))
{
Console.WriteLine(" {0}", s);
} stopBits = Console.ReadLine();
if (stopBits == "")
{
stopBits = defaultPortStopBits.ToString();
}
return (StopBits)Enum.Parse(typeof(StopBits), stopBits, true);
}
public static Handshake SetPortHandshake(Handshake defaultPortHandshake)
{
string handshake; Console.WriteLine("设置串行端口数据传输的握手协议:");
foreach (string s in Enum.GetNames(typeof(Handshake)))
{
Console.WriteLine(" {0}", s);
}
Console.Write("端口数据传输的握手协议(默认: {0}):", defaultPortHandshake.ToString());
handshake = Console.ReadLine();
if (handshake == "")
{
handshake = defaultPortHandshake.ToString();
}
return (Handshake)Enum.Parse(typeof(Handshake), handshake, true);
}
} }
上面我把串口的参数固定了,可以根据自己的需求设置自己要传的参数。
c# 实现串口编程-操作LED屏幕的更多相关文章
- C#串口编程 操作硬件
-------通过USB将硬件连接PC, 更新USB驱动,使用下面方法可控制相关设备. //1声明一个串口对象 public static SerialPort MainModule_Port_ = ...
- storysnail的Linux串口编程笔记
storysnail的Linux串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据Ge ...
- storysnail的Windows串口编程笔记
storysnail的Windows串口编程笔记 作者 He YiJun – storysnail<at>gmail.com 团队 ls 版权 转载请保留本声明! 本文档包含的原创代码根据 ...
- Linux下串口编程【转】
本文转载自:http://blog.csdn.net/w282529350/article/details/7378388 /************声明:本人只是见到这篇文章对我帮助很大才转载的,但 ...
- PB串口编程资料(转)
----MSCOMM32参数基本介绍2008年03月29日 星期六 上午 11:37MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能.MSComm控件在串口编程时非常方便,程序 ...
- Linux串口编程(转载)
在嵌入式Linux中,串口是一个字设备,访问具体的串行端口的编程与读/写文件 的操作类似,只需打开相应的设备文件即可操作.串口编程特殊在于串 口通信时相关参数与属性的设置.嵌入式Linux的串口编程时 ...
- Linux串口编程详解(转)
串口本身,标准和硬件 † 串口是计算机上的串行通讯的物理接口.计算机历史上,串口曾经被广泛用于连接计算机和终端设备和各种外部设备.虽然以太网接口和USB接口也是以一个串行流进行数据传送的,但是串口连接 ...
- linux串口编程总结
串口本身.标准和硬件 † 串口是计算机上的串行通讯的物理接口.计算机历史上,串口以前被广泛用于连接计算机和终端设备和各种外部设备.尽管以太网接口和USB接口也是以一个串行流进行数据传送的.可是串口连接 ...
- Qt中的串口编程之三
QtSerialPort 今天我们来介绍一下QtSerialPort模块的源代码,学习一下该可移植的串口编程库是怎么实现的. 首先,我们下载好了源代码之后,使用QtCreator打开整个工程,可以看到 ...
随机推荐
- 02.lib-v1.js
/* Date: 2014-07-29 4:06:07 [PM] */ function StringBuilder() { this.strings = new Array, this.length ...
- C++ DLL中导出函数的声明的方法
定义: TESTDLLEXPORT_API int fnTestDllExport(void); TESTDLLEXPORT_API int fnTestCall(void); TESTDLLEXPO ...
- uWSGI其三:uWSGI搭配Nginx使用
http://www.nowamagic.net/academy/detail/1330334 上一篇介绍了 uWSGI 来部署 Django 程序,但在在生产环境中单单只有 uWSGI 是不够的,N ...
- C语言中的atan和atan2(转)
在C语言的math.h或C++中的cmath中有两个求反正切的函数atan(double x)与atan2(double y,double x) 他们返回的值是弧度 要转化为角度再自己处理下. 前者 ...
- eclipse打jar包步骤
eclipse->文件->export->java->JAR file 选择项目,Options增加Add directory entries finish hadoop ja ...
- AIX配置时间服务器(NTP)
xntpd是关于网络时间协议的守护进程,它遵循了因特网时间服务器的通用标准.在启动 xntpd 时, xntpd 会读取 /etc/ntp.conf 配置文件来确定网络中系统时钟服务器,以 ntp 服 ...
- MFC创建非模态对话框并修改CStatic文字
//由IDD_STATUS_DIALOG创建一个对话框CDialog* pCheckNetStatusDlg = new CDialog(); pCheckNetStatusDlg->Creat ...
- Github开源编辑器Atom
Atom是Github社区开发的一款开源编辑器,很有sublime text特色,相当于开源的sublime text. sublime text用了很长时间了,为什么会重新学习使用另外一款编辑器呢? ...
- Spring Boot 内嵌Tomcat的端口号的修改
操作非常的简单,不过如果从来没有操作过,也是需要查找一下资料的,所以,在此我简单的记录一下自己的操作步骤以备后用! 1:我的Eclipse版本,不同的开发工具可能有所差异,不过大同小异 2:如何进入对 ...
- Android多线程异步处理:AsyncTask 的实现原理
AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用. AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法.注意继承时需要设定三个泛型P ...