通过TCP/IP方式不间断的读取条码扫描结果,并高速处理,停机不断线
2016-06-24 09:46
525 查看
请勿复制黏贴转载,不尊重原创作者的劳动,做可耻的小偷!
代码方便你们应用到自己的工程里,可自由使用,谢谢!
如有不明白,欢迎咨询: 邮箱 458978@qq.com QQ:458978 微信号:nieweiking
承接各种工业仪器仪表,电子装置的通讯程序开发、数据库应用开发,具体面议:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets ;
using System.Threading;
namespace CodeReaderClient.ConnectType
{
public class TCPConnectClass
{
/// <summary>
/// 以太网通讯对象
/// </summary>
public TcpClient MyTcpClient;
/// <summary>
/// 数据流操作
/// </summary>
public NetworkStream MyNetworkStream;
/// <summary>
/// 条码结果
/// </summary>
public string BarCodeStr = string.Empty;
/// <summary>
/// IP地址
/// </summary>
public string _IPAddressStr = string.Empty;
/// <summary>
/// 通讯端口
/// </summary>
public int _Port = 8080;
/// <summary>
/// 初始化
/// </summary>
/// <param name="IPAddressStr"></param>
/// <param name="Port"></param>
public TCPConnectClass (string IPAddressStr,int Port)
{
_IPAddressStr = IPAddressStr;
_Port = Port;
MyTcpClient = new TcpClient();
Thread Td = new Thread(RunPorcedue);
Td.IsBackground = true;
Td.Start();
}
/// <summary>
/// 连接检查方法,保持断线重连
/// </summary>
public void Connect()
{
try
{
if (!MyTcpClient.Connected)
{
IPAddress IPAddress1 = IPAddress.Parse(_IPAddressStr);
MyTcpClient = new TcpClient();
MyTcpClient.Connect(IPAddress1, _Port);
MyNetworkStream = MyTcpClient.GetStream();
}
if (MyTcpClient.Connected)
{
MyNetworkStream = MyTcpClient.GetStream();
byte[] Buffer = new byte[] { 0x41 };
MyNetworkStream.Write(Buffer, 0, 1);
}
}
catch (Exception)
{
}
}
/// <summary>
/// 循环工作线程
/// </summary>
private void RunPorcedue()
{
byte[] Buffer = new byte[128];
int Count = 0;
while (true)
{
//检查连接//发送心跳包
Connect();
//解析接收到的数据
try
{
if (MyTcpClient .Available >0)
{
Buffer = new byte[128];
Count = MyNetworkStream.Read(Buffer, 0, Buffer.Length);
if (Count > 0)
{
BarCodeStr = ExplanationByte(Buffer);
}
}
}
catch (Exception err)
{
string a = err.Message;
}
Thread.Sleep(100);
}
}
/// <summary>
/// 解析来自条码扫描头的字符串
/// </summary>
/// <param name="Buffer"></param>
/// <returns></returns>
private string ExplanationByte(byte[] Buffer)
{
if (Buffer .Length >0)
{
string Value = System.Text.ASCIIEncoding.ASCII.GetString(Buffer, 0, Buffer.Length);
Value = Value.Replace("\r", "");
Value = Value.Replace("\n", "");
Value = Value.Replace(" ", "");
return Value;
}
else
{
return string.Empty;
}
}
}
}
代码方便你们应用到自己的工程里,可自由使用,谢谢!
如有不明白,欢迎咨询: 邮箱 458978@qq.com QQ:458978 微信号:nieweiking
承接各种工业仪器仪表,电子装置的通讯程序开发、数据库应用开发,具体面议:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets ;
using System.Threading;
namespace CodeReaderClient.ConnectType
{
public class TCPConnectClass
{
/// <summary>
/// 以太网通讯对象
/// </summary>
public TcpClient MyTcpClient;
/// <summary>
/// 数据流操作
/// </summary>
public NetworkStream MyNetworkStream;
/// <summary>
/// 条码结果
/// </summary>
public string BarCodeStr = string.Empty;
/// <summary>
/// IP地址
/// </summary>
public string _IPAddressStr = string.Empty;
/// <summary>
/// 通讯端口
/// </summary>
public int _Port = 8080;
/// <summary>
/// 初始化
/// </summary>
/// <param name="IPAddressStr"></param>
/// <param name="Port"></param>
public TCPConnectClass (string IPAddressStr,int Port)
{
_IPAddressStr = IPAddressStr;
_Port = Port;
MyTcpClient = new TcpClient();
Thread Td = new Thread(RunPorcedue);
Td.IsBackground = true;
Td.Start();
}
/// <summary>
/// 连接检查方法,保持断线重连
/// </summary>
public void Connect()
{
try
{
if (!MyTcpClient.Connected)
{
IPAddress IPAddress1 = IPAddress.Parse(_IPAddressStr);
MyTcpClient = new TcpClient();
MyTcpClient.Connect(IPAddress1, _Port);
MyNetworkStream = MyTcpClient.GetStream();
}
if (MyTcpClient.Connected)
{
MyNetworkStream = MyTcpClient.GetStream();
byte[] Buffer = new byte[] { 0x41 };
MyNetworkStream.Write(Buffer, 0, 1);
}
}
catch (Exception)
{
}
}
/// <summary>
/// 循环工作线程
/// </summary>
private void RunPorcedue()
{
byte[] Buffer = new byte[128];
int Count = 0;
while (true)
{
//检查连接//发送心跳包
Connect();
//解析接收到的数据
try
{
if (MyTcpClient .Available >0)
{
Buffer = new byte[128];
Count = MyNetworkStream.Read(Buffer, 0, Buffer.Length);
if (Count > 0)
{
BarCodeStr = ExplanationByte(Buffer);
}
}
}
catch (Exception err)
{
string a = err.Message;
}
Thread.Sleep(100);
}
}
/// <summary>
/// 解析来自条码扫描头的字符串
/// </summary>
/// <param name="Buffer"></param>
/// <returns></returns>
private string ExplanationByte(byte[] Buffer)
{
if (Buffer .Length >0)
{
string Value = System.Text.ASCIIEncoding.ASCII.GetString(Buffer, 0, Buffer.Length);
Value = Value.Replace("\r", "");
Value = Value.Replace("\n", "");
Value = Value.Replace(" ", "");
return Value;
}
else
{
return string.Empty;
}
}
}
}
相关文章推荐
- Apache2.4 137行 httpd-ahssl.conf
- ios开发-获取网络图片
- struct和class的区别 观察者模式 https连接 点击button收到点击事件,中间发生了什么
- HTTPS和HTTP有什么区别,到底安全在哪里?
- 儿童智能手表行业未老先衰:5亿家长被伪智能忽悠
- 基于python网络编程实现支持购物、转账、存取钱、定时计算利息的信用卡系统
- symfony新建遇到问题-[GuzzleHttp\Exception\RequestException]
- http和https的区别
- 关于Android的https通讯安全
- 关于Android的https通讯安全
- 如何写一个HttpClient[1]——URI的处理
- Java网络编程(三) - Spring MVC高级特性
- 安卓简单技术-判断手机连接的是wifi还是数据流量
- 初学CentOS——压缩包、RPM包与网络命令基本
- TCP 三次握手
- openstack 网络发展简史
- openstack 网络发展简史
- openstack 网络发展简史
- kvm性能优化方案---cpu/内存/磁盘/网络
- openstack 网络架构 nova-network + neutron