您的位置:首页 > 理论基础 > 计算机网络

通过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;
}

}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: