用以太網(wǎng)通訊讀寫(xiě)條碼掃描頭
添加時(shí)間:2019-07-11 16:47:49
來(lái)源:
把通訊封裝成一個(gè)類(lèi)“
該程序的特點(diǎn)有優(yōu)勢(shì):
傳統(tǒng)寫(xiě)法當(dāng)條碼掃描頭停機(jī)、異常斷電、網(wǎng)絡(luò)異常等,通訊終端后,程序無(wú)法正常恢復(fù)連接,丟失數(shù)據(jù)引發(fā)故障,我寫(xiě)的程序,無(wú)論掃描頭斷電還是產(chǎn)線(xiàn)重啟,都能第一時(shí)間重啟連接并通訊上,穩(wěn)定性很好。
這個(gè)也是在一個(gè)朋友老程序不斷出問(wèn)題后,找我?guī)兔Γ医o重新寫(xiě)的,試用后效果很不過(guò),非常好用,再也沒(méi)有發(fā)生過(guò)問(wèn)題。
如果您有硬件的通訊訪問(wèn)難點(diǎn)和項(xiàng)目,可以聯(lián)系我解決,譬如 RS232 485 422 串口通訊、以太網(wǎng)接口的儀器儀表通訊、OPC Server自動(dòng)化數(shù)據(jù)PLC訪問(wèn)都可以,
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
{ /// <summary>
/// 458978@qq.com /// Niewei 蘇州 2016-09-10 /// </summary>
public class TCPConnectClass
{ /// <summary>
/// 以太網(wǎng)通訊對(duì)象 /// </summary>
public TcpClient MyTcpClient; /// <summary>
/// 數(shù)據(jù)流操作 /// </summary>
public NetworkStream MyNetworkStream; /// <summary>
/// 條碼結(jié)果 /// </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>
/// 連接檢查方法,保持?jǐn)嗑€(xiàn)重連 /// </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>
/// 循環(huán)工作線(xiàn)程 /// </summary>
private void RunPorcedue()
{ byte[] Buffer = new byte[128]; int Count = 0; while (true)
{ //檢查連接//發(fā)送心跳包 Connect(); //解析接收到的數(shù)據(jù)
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>
/// 解析來(lái)自條碼掃描頭的字符串 /// </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("
", "");
Value = Value.Replace("
", "");
Value = Value.Replace(" ", ""); return Value;
} else
{ return string.Empty;
}
}
}
}
程序?qū)懞昧?,可以用網(wǎng)絡(luò)調(diào)試助手來(lái)調(diào)試收發(fā)情況!

2019-07
把通訊封裝成一個(gè)類(lèi)“該程序的特點(diǎn)有優(yōu)勢(shì): 傳統(tǒng)寫(xiě)法當(dāng)條碼掃描頭停機(jī)、異常斷電、網(wǎng)絡(luò)異常等,通訊終端后,程序無(wú)法正?;謴?fù)連接,丟失數(shù)據(jù)引發(fā)故障,我寫(xiě)的程序,無(wú)論掃描頭斷電還是產(chǎn)線(xiàn)重啟,都能第一時(shí)間重啟連接并通訊上,穩(wěn)定性很好。 這個(gè)也是在一個(gè)朋友老程序不斷出問(wèn)題后,找我?guī)兔Γ摇?[了解更多]
地 址:中國(guó)(上海)自由貿(mào)易試驗(yàn)區(qū)臨港新片區(qū)平港路883-885號(hào)1幢
郵政編碼:201411
電 話(huà):13761963296
郵 箱:847098433@qq.com
投訴郵 箱:info@xtvu.com