打印

二维数组的操作,遇到点问题,请指教

[复制链接]
3211|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
sfesdm|  楼主 | 2012-12-15 22:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
u8 HelpTab[][50] = {
                                  {"0xaa 0x55 addr 0x3a 0xa5 0x5a:返回时间\r\n"        },
                                  {"0xaa 0x55 addr 0x3b 0xa5 0x5a:返回地点\r\n"        },
                                  {"0xaa 0x55 addr 0x3c0xa5 0x5a:返回人物\r\n"        },
                                  {"0xaa 0x55 addr 0x3d0xa5 0x5a:返回返回姓名\r\n" },
                                 {"0xaa 0x55 addr 0x3e0xa5 0x5a:返回返回性别\r\n"  },
                                 {"0xaa 0x55 addr 0x3f 0xa5 0x5a:返回返回事件\r\n"  },   
                                 {"help:返回帮助信息\r\n"                                               }      
                               };
在串口的协议中,想加一个帮助命令,比如有上面一个二维数组,只要发送help,就会把二维数组的数据全返回给用户。
比如有一个发送函数void SendMessage(u8 *P,u16 num);
在发送的时候,传入HelpTab[0],然后通过HelpTab的首地址,即HelpTab[0],再加一个偏移地址,把HelpTab的数据一次性全部返回,实际上却做不到,因为在发送完第一行数据后,就会停止发送后面的数据。

我的疑问是,对于单片机来说,不管是0xaa这样的数据,还是换行符,都是数据,它不会像上位机那样,把它当作换行符。但是实际上却无法一次性把数据发上来,这是上位机软件的处理问题还是编译器处理的机制还是???

相关帖子

沙发
渤海三叠浪| | 2012-12-15 22:22 | 只看该作者
是你的问题

使用特权

评论回复
板凳
sfesdm|  楼主 | 2012-12-15 22:23 | 只看该作者
渤海三叠浪 发表于 2012-12-15 22:22
是你的问题

请指教

使用特权

评论回复
地板
渤海三叠浪| | 2012-12-15 22:24 | 只看该作者
哇  这么快速回复  我打酱油的啊  不一定会啊  我看看哈

使用特权

评论回复
5
渤海三叠浪| | 2012-12-15 22:26 | 只看该作者
楼主 上下机  都是机  应该一样的吧   

使用特权

评论回复
6
sfesdm|  楼主 | 2012-12-15 22:28 | 只看该作者
渤海三叠浪 发表于 2012-12-15 22:26
楼主 上下机  都是机  应该一样的吧

这个效果是用串口软件观测到的,想用超级终端看看,没想到这次装的系统竟然没有超级终端,太搞笑了

使用特权

评论回复
7
渤海三叠浪| | 2012-12-15 22:29 | 只看该作者
!!!实际做不到?  怎么可能。

只要能想到 就能做到。
二维数组 我一般不用。 不太好理解。 比较抽象。

使用特权

评论回复
8
渤海三叠浪| | 2012-12-15 22:30 | 只看该作者
sfesdm 发表于 2012-12-15 22:28
这个效果是用串口软件观测到的,想用超级终端看看,没想到这次装的系统竟然没有超级终端,太搞笑了 ...

那是显示的事情啊   

使用特权

评论回复
9
sfesdm|  楼主 | 2012-12-15 22:31 | 只看该作者
这个问题肯定是换行符导致的,只是不知道怎么解决而已。三维和以上的数组才抽象,二维的还好

使用特权

评论回复
10
渤海三叠浪| | 2012-12-15 22:31 | 只看该作者
发没发上来 主要看内存。  眼睛没看到  也不一定 实际没收到啊

使用特权

评论回复
11
渤海三叠浪| | 2012-12-15 22:32 | 只看该作者
sfesdm 发表于 2012-12-15 22:28
这个效果是用串口软件观测到的,想用超级终端看看,没想到这次装的系统竟然没有超级终端,太搞笑了 ...

找个  可以选择 换行 或者不换行的软件 不可以么?

使用特权

评论回复
12
渤海三叠浪| | 2012-12-15 22:33 | 只看该作者
sfesdm 发表于 2012-12-15 22:31
这个问题肯定是换行符导致的,只是不知道怎么解决而已。三维和以上的数组才抽象,二维的还好 ...

我学过C语言  我感觉二维数组 不是事实存在  本身C设计二维数组就是虚拟的。不知道我理解的对不

使用特权

评论回复
13
sfesdm|  楼主 | 2012-12-15 22:35 | 只看该作者
渤海三叠浪 发表于 2012-12-15 22:33
我学过C语言  我感觉二维数组 不是事实存在  本身C设计二维数组就是虚拟的。不知道我理解的对不 ...

知之甚浅,不敢发表断论,呵呵

使用特权

评论回复
14
渤海三叠浪| | 2012-12-15 22:37 | 只看该作者
为什么我的等级好像比你低啊、?

使用特权

评论回复
15
sfesdm|  楼主 | 2012-12-15 22:40 | 只看该作者
渤海三叠浪 发表于 2012-12-15 22:37
为什么我的等级好像比你低啊、?

技术员和工程师谁高级:dizzy:不过我还真看到有些ID是比你高分才一个月亮的

使用特权

评论回复
16
xlsbz| | 2012-12-15 23:00 | 只看该作者
呵呵

使用特权

评论回复
17
ohy3686| | 2012-12-15 23:17 | 只看该作者
从本质上来说,在C语言里面是没有二维数组的。所谓二维数组,其实就是一个元素为一维数组的一维数组。
第二,不能用上位机软件的思维来理解单片机的串口操作的。

使用特权

评论回复
18
ohy3686| | 2012-12-15 23:17 | 只看该作者
渤海三叠浪 发表于 2012-12-15 22:33
我学过C语言  我感觉二维数组 不是事实存在  本身C设计二维数组就是虚拟的。不知道我理解的对不 ...

你的理解是正确的。

使用特权

评论回复
19
nbsmaps| | 2012-12-16 14:07 | 只看该作者
指令中有数据方式与文本方式,而接收机同时只能识别一种方式,当然不能一次性发送成功了。要不接收机设为二进制方式,然后把回车符什么去掉或在接收机端重新拼合

使用特权

评论回复
20
shell.albert| | 2012-12-16 14:11 | 只看该作者
是你的程序有问题。
简单的串口直接发送就可以了,所你所有的数据都发送完了。
在接收端有数据就接收!
显示,应该没有问题的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

49

主题

346

帖子

3

粉丝