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值

解决方案 »

  1.   


        StreamReader streamReader = new StreamReader(txtFileFullName, Encoding.Default);
                    while (!streamReader.EndOfStream)
                    {
                        strLine = streamReader.ReadLine().Trim();
                        //对每一行做参数提取
                    } 
      

  2.   


           //先取出每行的数据,之后转成数组
            //根据判断数组长度,算出中间有几个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];
            }搞定!