本帖最后由 xiaotiange 于 2010-07-30 09:18:43 编辑

解决方案 »

  1.   

    把hiOrder设置成数组,然后改成cmd[2]=hiOrder[index],这个index可以自己处理。cmd循环,那index的值也可以设置为跟着变。
      

  2.   

    是的
    我将hiOrder设置成数组了,并且是锯齿数组……但可能是写法不对,hiOrder[i]仍然只输出0x2a,前面都被覆盖
    我也不知道怎样写了…… temp=new byte[1][];
       for (int i = 0; i < 11;i++ )
                        {
                            temp[0] = new byte[11] { 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a};
                            cmd[2]=temp[0][i];
                            hiOrder = temp[0][i];
                        }
      

  3.   

    在你的发送循环中,比如:int[] temp = new int[11] { 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2a};
    int loopHiOrder()
    {
        static byte n = -1;
        
        if (++n == 11)
        {
           n = -1;
           return temp[11];
        }
    else
      return temp[++n];
    }for(;;)
    {
        //发送前
         cmd[2] = loopHiOrder();
        //发送代码}
      

  4.   


                byte[] temp = new byte[] { 0x01, 0x01, 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x01, 0x00, 0x0A };
                foreach (byte i in temp)
                {
                    Console.WriteLine(i);
                    
                }
      

  5.   

                cmd = new byte[8];
                int Max_Val = 0x2a;
                int Min_Val = 0x20;
                for(int cnt=Min_Val;cnt=<Max_Val;cnt++)
                {
                   cmd[0] = 0x01;
                   cmd[1] = 0x01;    
                   cmd[2] = cnt;       //hiOrder;  //hiOrder从0x20--0x2a         
                   cmd[3] = 0x01;
                   cmd[4] = 0x00;
                   cmd[5] = 0x0A;
                   UInt16 crccode = CRC16(cmd, 6);
                   cmd[6] = Convert.ToByte(crccode / 256);
                   cmd[7] = Convert.ToByte(crccode % 256)[/align]
                   Port.Write(cmd);//send
                }呵呵,投机取巧哦。似乎能满足你~
      

  6.   

     static int n = -1;
            int loopHiOrder()
            {
                int[] temp = new int[11] { 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a };
                if (++n == 10)
                {
                   n = -1;
                   return temp[10];
                }
                else
                return temp[++n];
            }        private void button1_Click(object sender, EventArgs e)
            {
                for (int i = 0; i < 20;i++ )
                {
                    textBox1.Text += loopHiOrder().ToString() + System.Environment.NewLine;
                }
            }我测试下 VS2008 测试无问题~