ASM 板


LINE

看板 ASM  RSS
※ 引述《gg1122 (99通未接来电)》之铭言: : 因为目前UART Receive的部份都必须判断收到CR : 或某个End of char 才能办法收到完整资料 : 程式目前写成如下 Buffer一直收到 爆掉 就直接overflow 重新Reset index : 目前遇到一个问题 我的真实资料前面会遇到0x0D 也就是CR : 搞不太懂要怎处理 因为本来想说判断 资料没到多少长度就继续收 : 大於门槛值长度就整条直接做处理 今天测试是不行 不太懂什麽原因? : 难道要End of Char 要变连续二个BYTE 某个值 做判断才能闪这个问题? : 还请各位先进 能够帮忙 给意见 谢谢 定义好你的资料封包,没有说结尾一定要是CR(0x0D) 比如0xAA是封包开始,0xFE是封包结尾,问题是如果资料 有0xFE怎麽办,可以用控制字元填充,比如0xFD,只要资 料是0xAA、0xFE、0xFD,前方就填充0xFD,接收data时如 果收到0xFD,表示下一个byte是资料,不是封包控制字元 。 <0xAA><data 1>...<data n><0xFE> 或是偷懒,封包加入长度资料讯息,封包结尾用checksum检查 <0xAA><data length n><data 1><data 2>...<data n><checksum> -- 不要问我从哪来,我只是一个浪迹天涯的工程师.... --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.232.21.114
1F:推 WolfLord:也可以用Base64或Code128来编码(internet mime) 08/15 23:07
2F:推 gg1122:哪些封包都有包好 只是原始的资料进来哪边不清楚 08/15 23:09
3F:→ gg1122:51做了什麽 把判断0x0D弄掉 资料整段大於某个长度 再去拆 08/15 23:10
4F:→ gg1122:可是我看51哪边就一直进不去拆封包的 程式段 觉得很怪 08/15 23:11
5F:推 WolfLord:如果你的资料是ascii,你也可以判断比32比127大直接忽略 08/15 23:14
6F:→ WolfLord: 比32小 08/15 23:15
7F:→ WolfLord:不存入缓冲 08/15 23:15
8F:→ gg1122:我的资料0~0xFF都会出现 应该不可行 08/15 23:17
这样很高的机率是程式问题,你的解封包怎样做的?如果是用状态 机去做,要检查状态机迁移的条件。整个解封包如果大杂烩的写在 一起就比较难debug.如果是用指标函式去跑,可以"比较"容易透过 指标函式的迁移去检查状态机的状态处发是否正确? ※ 编辑: MasterChang 来自: 118.232.21.114 (08/15 23:34)
9F:推 gg1122:if(UART_Buffer[0]=head1 && UART_Buffer[1]==head2) 08/15 23:40
10F:→ gg1122:这样一层一层if挂下去 08/15 23:42
if(UART_Buffer[0]==head1 && UART_Buffer[1]==head2) 看得出来哪里不一样吗? 而且这逻辑有问题,应该先检查第一个接收资料是否为head1。 若为真才做检查head2的动作。若为否则回到检查接收资料是否 为head1。 因为资料开头的head1有可能在UART_Buffer[1]里....XD 简单的说类似这样的处理 ch = SURF; switch(msgstate) { case 0: if(ch == head1){msgstate++;} else{msgstate = 0;} break; case 1: if(ch == head2){msgstate++;} else{msgstate = 0;} break; case 3: ... default: } ※ 编辑: MasterChang 来自: 118.232.21.114 (08/15 23:48)
11F:推 gg1122:哪我笔误 == 才对 其实主要是进不来这行 08/15 23:46
12F:→ gg1122:奇怪 判断RX LEN多长在进来 怎会不行 搞不懂51动作 08/15 23:49
13F:→ gg1122:明天我改一个一个BYTE去处理 不过还是想不透必须补结尾字元 08/15 23:55
14F:→ gg1122:整个资料才会收进来 ... 08/15 23:56
是不是PC端程式必须收到CR字元才开始发送?PC端程式确认一下... ※ 编辑: MasterChang 来自: 118.232.21.114 (08/15 23:58)
15F:→ gg1122:上端丢的 我用VC写GUI去丢到51的 所以资料格式都是我控制的 08/15 23:59
如果是呼叫win api,确认一下结构的设定,那部分我没碰、不 熟,我都是用BCB + Victor元件。 ※ 编辑: MasterChang 来自: 118.232.21.114 (08/16 00:03)
16F:→ gg1122:明天再查不出来 我就改成一个一个BYTE去判断了 08/16 00:00
17F:→ gg1122:谢谢! 08/16 00:01
18F:推 WolfLord:PC端如果你open stream piple的话,只有两种状况会真实 08/16 16:44
19F:→ WolfLord:真实传送:buffer full跟收到\r\n 08/16 16:45
20F:→ WolfLord:解觉得方法有两种:open raw 或把 file io buffer改成1 08/16 16:46
21F:推 gg1122:用成FSM就好了! 08/18 11:49
22F:推 timestoprun:GOOGLE一下FIFO的UART写法!!应该可以解决唷!!! 10/22 21:12







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:iOS站内搜寻

TOP