工作模式
通过串口服务器,采集到天平的称量值发送到PC端
操作步骤
1.软件测试
测试工具: USR-M0_V2.2.5.8
基础设置:模块静态IP 设置成服务器IP,HTTP服务端口 设置成4001,网关 设置成当前连接的网关IP,勾选 Reset、Link、RFC2217。如下图所示:
端口设置:校验/数据/停止 设置成NONE/8/1,串口波特率 设置成9600,模块工作方式 设置成TCP Server,本地端口 设置成21018,远程端口 设置成8234。如下图所示:
2.数据接收测试
测试工具: SerialPortUtility
串口设置:串口选择TCP/UDP,波特率选择9600,Mode选择TCP Client,Dest IP 输入192.168.5.19,Dest Port 输入21018。如下图所示:
3.代码实现
首先需要声明一个InitializeTcpClient方法,用来接收服务器IP和端口号
这里需要引用 SuperSocket.ClientEngine.dll 和 SuperSocket.ProtoBase.dll
private AsyncTcpSession InitializeTcpClient(string serverIP, int port)
{
client = new AsyncTcpSession();
// 连接断开事件
client.Closed += client_Closed;
// 收到服务器数据事件
client.DataReceived += client_DataReceived;
// 连接到服务器事件
client.Connected += client_Connected;
// 发生错误的处理
client.Error += client_Error;
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(serverIP), port);
client.Connect(endPoint);
return client;
}
private void client_Closed(object sender, EventArgs e)
{
Console.WriteLine("连接断开");
}
private void client_DataReceived(object sender, DataEventArgs e)
{
string deviceData = Encoding.Default.GetString(e.Data);
ReadWeight(deviceData);
}
private void client_Connected(object sender, EventArgs e)
{
Console.WriteLine("连接成功");
}
private void client_Error(object sender, SuperSocket.ClientEngine.ErrorEventArgs e)
{
Console.WriteLine(e.Exception.Message);
}
将deviceData字符串转换为字符数组,进行拆分替换后,最终拿到称量值数据
public string weight = "";
private string ReadWeight(string deviceData)
{
try
{
string[] deviceStr = deviceData.Split(" ".ToCharArray());
if (deviceStr.Length > 0)
{
string[] weightStr = deviceStr[1].Split("\r".ToCharArray());
weight = weightStr[0].ToUpper().Trim().Replace("SS", "").Replace("SD", "").Replace("g", "").Replace(Environment.NewLine, "").Substring(0, 6);
}
return weight;
}
catch (Exception ex)
{
return ex.ToString();
}
}
4.最终效果
当 PWR、WORK、LINK、TX 指示灯亮起,表示连接成功
参考资料
请作者喝杯咖啡吧
如果本文对你有帮助的话,可以请作者喝杯咖啡~
微信 | 支付宝 |
---|---|