public void serialPort_ReceiveData(object sender, SerialDataReceivedEventArgs e)
{
string s = "";
byte[] APIcmd = new byte[34];
this.serialPort1.Read(APIcmd, 0, APIcmd.Length);
s = System.Text.ASCIIEncoding.ASCII.GetString(APIcmd);//这样处理得到的结果是s="123\0\0\0\0\0\0\0\0\0\0"
//for (int i = 0; i < APIcmd.Length; i++)
//{
// s += APIcmd[i].ToString();
//}//这样处理的结果是s="495051000000000000"
this.textBox1.Invoke(new testTextBox(stringTest), new object[] { s.Trim() });
}
现在要得到“123",要怎么处理啊?
因为s="123\0\0\0\0\0\0\0"写入数据库的时候会有问题
7 个解决方案
#1
发送方是用串口调试助手(铭心软体)发送的,希望有人用过
#2
字符串做以下处理可以得到结果
但是,这样又改了发送过来的原始数据,迷茫……唉……
for (int i = 1; i < 31; i++)
{
s=s.Trim('\0');
}
但是,这样又改了发送过来的原始数据,迷茫……唉……
#3
不懂,帮顶啊
#4
知道了,问题貌似出在 byte[] APIcmd = new byte[34];
没发34个字符就会以\0的方式替代
这要怎么处理呢?发送方不能固定啊……
没发34个字符就会以\0的方式替代
这要怎么处理呢?发送方不能固定啊……
#5
read 方法返回了取得的长度 你没有用到
int count = this.serialPort1.Read(APIcmd, 0, APIcmd.Length);
s = System.Text.ASCIIEncoding.ASCII.GetString(APIcmd, 0, count );//
int count = this.serialPort1.Read(APIcmd, 0, APIcmd.Length);
s = System.Text.ASCIIEncoding.ASCII.GetString(APIcmd, 0, count );//
#6
好好学习天天向上
#7
ok,就是这个问题,谢谢
#1
发送方是用串口调试助手(铭心软体)发送的,希望有人用过
#2
字符串做以下处理可以得到结果
但是,这样又改了发送过来的原始数据,迷茫……唉……
for (int i = 1; i < 31; i++)
{
s=s.Trim('\0');
}
但是,这样又改了发送过来的原始数据,迷茫……唉……
#3
不懂,帮顶啊
#4
知道了,问题貌似出在 byte[] APIcmd = new byte[34];
没发34个字符就会以\0的方式替代
这要怎么处理呢?发送方不能固定啊……
没发34个字符就会以\0的方式替代
这要怎么处理呢?发送方不能固定啊……
#5
read 方法返回了取得的长度 你没有用到
int count = this.serialPort1.Read(APIcmd, 0, APIcmd.Length);
s = System.Text.ASCIIEncoding.ASCII.GetString(APIcmd, 0, count );//
int count = this.serialPort1.Read(APIcmd, 0, APIcmd.Length);
s = System.Text.ASCIIEncoding.ASCII.GetString(APIcmd, 0, count );//
#6
好好学习天天向上
#7
ok,就是这个问题,谢谢