TXT文件中记录的格式是这样的:254 {length} 18 {value} [{value} ...]{checksum} 实例如下
254,6,18,73,23,138
254,8,18,200,0,0,0,32
254,8,18,224,46,0,0,218
254,6,18,136,19,79
254,5,18,0,235
254,5,18,3,232
254,5,18,25,210
254,6,18,232,3,255
254,8,18,16,39,0,0,177
254,8,18,160,140,0,0,188
254,8,18,112,148,0,0,228
254,5,18,3,232
254,5,18,0,235
254,5,18,1,234
254,8,18,216,214,0,0,58
254,5,18,0,235
254,8,18,160,140,0,0,188
现在要读取其中的value值 也就是介于第三位18及最后一位checksum值之间的数据
然后这样发送下去
private void toolStripMenuItem3_Click(object sender, EventArgs e)//从文件提取参数
{
int param;
int value1 = 0;
int value2 = 0;
int value3 = 0;
int value4 = 0; for (param = 0; param < 79; param++)
{
SendBuffer[0] = TAG_CMD;
SendBuffer[1] = 0x09;
SendBuffer[2] = CMD_SET_PARAM_VALUE;
SendBuffer[3] = (byte)(param);
SendBuffer[4] = (byte)(value1);
SendBuffer[5] = (byte)(value2);
SendBuffer[6] = (byte)(value3);
SendBuffer[7] = (byte)(value4);
SendBuffer[8] = (byte)(checksum(8));
this.serialPort1.Write(SendBuffer, 0, SendBuffer[1]);
}
}
其中value1,2,3,4就是读取的值 因为文件中的数据长度从5到8都有 所以最长是4个value 最短是1个value 少于4个的其它的可以赋0值 param值就按读取的行数累加 一共有78条
请教大家怎样判断读取其中的value值
254,6,18,73,23,138
254,8,18,200,0,0,0,32
254,8,18,224,46,0,0,218
254,6,18,136,19,79
254,5,18,0,235
254,5,18,3,232
254,5,18,25,210
254,6,18,232,3,255
254,8,18,16,39,0,0,177
254,8,18,160,140,0,0,188
254,8,18,112,148,0,0,228
254,5,18,3,232
254,5,18,0,235
254,5,18,1,234
254,8,18,216,214,0,0,58
254,5,18,0,235
254,8,18,160,140,0,0,188
现在要读取其中的value值 也就是介于第三位18及最后一位checksum值之间的数据
然后这样发送下去
private void toolStripMenuItem3_Click(object sender, EventArgs e)//从文件提取参数
{
int param;
int value1 = 0;
int value2 = 0;
int value3 = 0;
int value4 = 0; for (param = 0; param < 79; param++)
{
SendBuffer[0] = TAG_CMD;
SendBuffer[1] = 0x09;
SendBuffer[2] = CMD_SET_PARAM_VALUE;
SendBuffer[3] = (byte)(param);
SendBuffer[4] = (byte)(value1);
SendBuffer[5] = (byte)(value2);
SendBuffer[6] = (byte)(value3);
SendBuffer[7] = (byte)(value4);
SendBuffer[8] = (byte)(checksum(8));
this.serialPort1.Write(SendBuffer, 0, SendBuffer[1]);
}
}
其中value1,2,3,4就是读取的值 因为文件中的数据长度从5到8都有 所以最长是4个value 最短是1个value 少于4个的其它的可以赋0值 param值就按读取的行数累加 一共有78条
请教大家怎样判断读取其中的value值
解决方案 »
- C#winform怎样自己写一个messagebox
- asp.Net网站使用ajax实现局部更新,调用wcf服务后,局部更新失效
- ushort 转换为byte[]问题
- 一直心中有个疑问,请大家帮忙解决
- 如何控制局网中其中一台计算机不能上网?想用C#实现。高手指点一下!
- C# 让串口一直处于接收状态
- 怎样在窗体显示出来后自动执行一条语句或者一个事件。
- 请教:datagrid 双击事件问题(不使用TextBox.DoubleClick)
- 请教C#绘图事件PaintEventArgs是不是不停在重绘呀
- 求助大神!!!C#如何屏蔽引用他人的DLL中弹出的错误窗口?
- 接:关于string和array的问题详细说明
- 请教高手c#中bitmap转灰度的几个问题
StreamReader streamReader = new StreamReader(txtFileFullName, Encoding.Default);
while (!streamReader.EndOfStream)
{
strLine = streamReader.ReadLine().Trim();
//对每一行做参数提取
}
//先取出每行的数据,之后转成数组
//根据判断数组长度,算出中间有几个Value
int val1,val2,val3,val4;
string strArr = "行数据".Split(',');
if (strArr.Length == 4 + 1)
{
val1 = strArr[3];
}
if (strArr.Length == 4 + 2)
{
val1 = strArr[3];
val2 = strArr[4];
}
if (strArr.Length == 4 + 3)
{
val1 = strArr[3];
val2 = strArr[4];
val3 = strArr[5];
}
if (strArr.Length == 4 + 4)
{
val1 = strArr[3];
val2 = strArr[4];
val3 = strArr[5];
val4 = strArr[6];
}搞定!