本篇展示大族打标机 TCP通讯代码。大族软件提供 TCPserver,我们作为Client ,通讯连接切换打印模板,传递打印内容,以及触发打印。
指令如下
$Initialize_模板名 // 切换模板
$Data_89860,08611,04791 // 打印动态内容传递多个逗号分割,
$MarkStart_ //开始打印指令,
- 初始化指令:指令字符串为“$Initialize_模板名”,假设初始化AA模板,则初始化指令为$Initialize_AA。
- 初始化成功,返回指令:0x02+$Initialize_OK+0x03
反之,返回指令:0x02+$Initialize_FALSE+0x03
- 数据传输指令:指令字符串为“$Data_数据1,数据2,数据3,数据4”,假设传送一串数据“89860,08611,04791”,则数据传输指令为$Data_89860,08611,04791。
- 数据成功收到且格式正确,返回指令:0x02+$Receive_OK+0x03,
如果数据非法或格式不正常,返回指令:0x02+$Receive_Error +0x03。
如果系统已经退出打标对话框,返回指令:0x02+$SysNoReady+0x03。
- 启动打标指令为: $MarkStart_
- 标记完成返回指令:0x02+$MarkStart_OK+0x03
标记失败返回指令:0x02+$MarkStart_ERROR+0x03
public partial class HanslaserTestForm : Form
{
public HanslaserTestForm()
{
InitializeComponent();
ReceiveData();
}
private void ReceiveData()
{
Task.Run(async () => {
while (true)
{
try
{
if (client != null)
{
var str = client.Receive();
this.Invoke(() => {
if(str!=null)
TxtReceive.Text = str;// StringHexHelper.ByteToHexStr(str);
});
}
}
catch
{
}
await Task.Delay(500);
}
});
}
MyTcpClient client;
private void button1_Click(object sender, EventArgs e)
{
try
{
client = TcpClientBox.GetClient(TxtIp.Text, TxtNum.Value.ToInt());
var sendStr = this.TxtSend.Text;
//sendStr = sendStr.Replace(" ", "");
//var byteStr = sendStr.ToBytesFromHexString();
client.Send(sendStr);
}
catch (Exception ex)
{
MyMessageBox.ShowAlert("异常" + ex.ToString());
}
}
}