修改发送指令时的编码规则 改为适配中文的
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Concurrent;
|
||||
using System.ComponentModel.Design;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using TouchSocket.Core;
|
||||
@ -371,31 +372,63 @@ namespace WCS.BLL
|
||||
public List<byte[]> GenerateMessageList(int boardId, byte[] data, string message)
|
||||
{
|
||||
var list = new List<byte[]>();
|
||||
//去除不满足ASCII的数据
|
||||
message = Regex.Replace(message, @"[^\u0000-\u007F]+", string.Empty);
|
||||
//总共发的数据位数
|
||||
data[1] = Convert.ToByte(message.Length);
|
||||
//数据发送总帧数
|
||||
var messageCount = Math.Ceiling((decimal)message.Length / 6);
|
||||
////去除不满足ASCII的数据
|
||||
//message = Regex.Replace(message, @"[^\u0000-\u007F]+", string.Empty);
|
||||
////总共发的数据位数
|
||||
//data[1] = Convert.ToByte(message.Length);
|
||||
////数据发送总帧数
|
||||
//var messageCount = Math.Ceiling((decimal)message.Length / 6);
|
||||
//for (int i = 0; i < messageCount; i++)
|
||||
//{
|
||||
// var tempmessage = string.Empty;
|
||||
// //不是最后一条指令
|
||||
// if (i != messageCount - 1)
|
||||
// {
|
||||
// tempmessage = message.Substring(i * 6, 6);
|
||||
// var charArray = tempmessage.ToCharArray();
|
||||
// for (int index = 0; index < 6; index++)
|
||||
// {
|
||||
// data[2 + index] = Convert.ToByte(charArray[index]);
|
||||
// }
|
||||
// }
|
||||
// //最后一条指令
|
||||
// else
|
||||
// {
|
||||
// tempmessage = message.Substring(i * 6, message.Length % 6 == 0 ? 6 : message.Length % 6);
|
||||
// var charArray = tempmessage.ToCharArray();
|
||||
// //先把所有数据位置为0
|
||||
// for (int index = 0; index < 6; index++)
|
||||
// {
|
||||
// data[2 + index] = 0x00;
|
||||
// }
|
||||
// //有数据的置为对应的数据
|
||||
// for (int index = 0; index < charArray.Length; index++)
|
||||
// {
|
||||
// data[2 + index] = Convert.ToByte(charArray[index]);
|
||||
// }
|
||||
// }
|
||||
// list.Add(GenerateMessage(boardId, data));
|
||||
//}
|
||||
|
||||
//var dataBtyes = Encoding.GetEncoding(936).GetBytes(message);
|
||||
|
||||
var dataBtyes = Encode.Encode.GetGb2312(message);
|
||||
data[1] = Convert.ToByte(dataBtyes.Length);
|
||||
var messageCount = Math.Ceiling((decimal)dataBtyes.Length / 6);
|
||||
for (int i = 0; i < messageCount; i++)
|
||||
{
|
||||
var tempmessage = string.Empty;
|
||||
byte[] charArray = dataBtyes.Skip(i * 6).Take(6).ToArray();
|
||||
//不是最后一条指令
|
||||
if (i != messageCount - 1)
|
||||
{
|
||||
tempmessage = message.Substring(i * 6, 6);
|
||||
var charArray = tempmessage.ToCharArray();
|
||||
for (int index = 0; index < 6; index++)
|
||||
{
|
||||
data[2 + index] = Convert.ToByte(charArray[index]);
|
||||
data[2 + index] = charArray[index];
|
||||
}
|
||||
}
|
||||
//最后一条指令
|
||||
else
|
||||
{
|
||||
tempmessage = message.Substring(i * 6, message.Length % 6 == 0 ? 6 : message.Length % 6);
|
||||
var charArray = tempmessage.ToCharArray();
|
||||
//先把所有数据位置为0
|
||||
for (int index = 0; index < 6; index++)
|
||||
{
|
||||
@ -404,11 +437,12 @@ namespace WCS.BLL
|
||||
//有数据的置为对应的数据
|
||||
for (int index = 0; index < charArray.Length; index++)
|
||||
{
|
||||
data[2 + index] = Convert.ToByte(charArray[index]);
|
||||
data[2 + index] = charArray[index];
|
||||
}
|
||||
}
|
||||
list.Add(GenerateMessage(boardId, data));
|
||||
}
|
||||
|
||||
return list;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user