数组问题,在线等

xiaotiange 2010-07-30 09:15:15
一个串口通讯程序,

cmd = new byte[8];
cmd[0] = 0x01;
cmd[1] = 0x01;
cmd[2] = 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)


;
将cmd这个字节数组循环发送
问题在hiOrder,每次循环发送的都是hiOrder为0x2a的数组,如何才能将hiOrder值为0x20---0x2a的cmd数组循环发出去?
...全文
183 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Forrest23 2010-07-30
  • 打赏
  • 举报
回复

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);

}
xiaotiange 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 baesky 的回复:]

引用楼主 xiaotiange 的回复:
一个串口通讯程序,
C# code

[align=left]cmd = new byte[8];
cmd[0] = 0x01;
cmd[1] = 0x01;
cmd[2] = hiOrder; //hiOrder从0x20--0x2a
……
[/Quote]

每次都发第一个……,循环不起作用,哎,我不会调了
宇峰科技 2010-07-30
  • 打赏
  • 举报
回复
有点不懂
Baesky 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 xiaotiange 的回复:]
一个串口通讯程序,
C# code

[align=left]cmd = new byte[8];
cmd[0] = 0x01;
cmd[1] = 0x01;
cmd[2] = hiOrder; //hiOrder从0x20--0x2a
cmd[3] = 0x01;
……
[/Quote]
在你的发送循环中,比如:

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();
//发送代码。。。

}
xiaotiange 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hao1hao2hao3 的回复:]

把hiOrder设置成数组,然后改成cmd[2]=hiOrder[index],这个index可以自己处理。cmd循环,那index的值也可以设置为跟着变。
[/Quote]
是的
我将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];
}
wylp_19 2010-07-30
  • 打赏
  • 举报
回复
没搞过这东西 友情帮顶
mayonglong 2010-07-30
  • 打赏
  • 举报
回复
设成数组,循环赋值~
hao1hao2hao3 2010-07-30
  • 打赏
  • 举报
回复
把hiOrder设置成数组,然后改成cmd[2]=hiOrder[index],这个index可以自己处理。cmd循环,那index的值也可以设置为跟着变。
xiaotiange 2010-07-30
  • 打赏
  • 举报
回复
没人回答??
倒霉熊 2010-07-30
  • 打赏
  • 举报
回复
这个我不懂
xiaotiange 2010-07-30
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 baesky 的回复:]

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)
……
[/Quote]
谢谢你~ 这个当然没问题
Baesky 2010-07-30
  • 打赏
  • 举报
回复
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 测试无问题~
睡神在睡觉 2010-07-30
  • 打赏
  • 举报
回复
            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
}


呵呵,投机取巧哦。。。。似乎能满足你~

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧