collection里的数据为:
8 Khz
12.5 Khz
16 Khz
20 Khz
25 Khz
40 Khz
50 Khz
80 Khz
(注意 有单位)
我写的一段代码 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {
            pf = Convert.ToInt16(comboBox1.Text);            SendBuffer[0] = TAG_CMD;
            SendBuffer[1] = 0x08;
            SendBuffer[2] = CMD_SET_PARAM_VALUE;
            SendBuffer[3] = PARAM_PWM_FREQUENCY;
            SendBuffer[4] = (byte)(pf & 0xff);
            SendBuffer[5] = (byte)(pf >> 8);
            SendBuffer[6] = (byte)(checksum(6));
            frm1.serialPort1.Write(SendBuffer, 0, SendBuffer[1]);
        }由于有单位 会取值错误 有没有什么方法次用去掉单位也可以取到值的
另外在去掉单位调试时会在
frm1.serialPort1.Write(SendBuffer, 0, SendBuffer[1]);
出错:未将对象引用设置到对象的实例
其中
frm1.serialPort1.Write(SendBuffer, 0, SendBuffer[1]);是从form1中将private改为public引用过来的请大家指点

解决方案 »

  1.   

    单位你可以根据空格的位置,去除掉
    跟踪看看frm1是否为null,serialPort1是否public
      

  2.   

    DataRowView drv = (DataRowView)comboBox1.SelectedItem;
    string Id = drv.Row["id"].ToString();
    单步值为 null
      

  3.   

    把值读出来变成string。用string.replace("Khz",""),再装成float
      

  4.   

     private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
            {
                pf = Convert.ToInt16(comboBox1.Text.substring(0,comboBox1.Text.indexOf(" ")));            SendBuffer[0] = TAG_CMD;
                SendBuffer[1] = 0x08;
                SendBuffer[2] = CMD_SET_PARAM_VALUE;
                SendBuffer[3] = PARAM_PWM_FREQUENCY;
                SendBuffer[4] = (byte)(pf & 0xff);
                SendBuffer[5] = (byte)(pf >> 8);
                SendBuffer[6] = (byte)(checksum(6));
               new frm1().serialPort1.Write(SendBuffer, 0, SendBuffer[1]);
            }
      

  5.   

    第一句改成下面的这句
     pf = Convert.ToInt16(comboBox1.Text.Split(' ')[0]);
      

  6.   

    情况有变
    现在要将等一个值也就是8Khz设为0 以此类推 80Khz为7 
    要如何取值