以文本方式查看主题 - 中文XML论坛 - 专业的XML技术讨论区 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- DOS下C写串口的问题 (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=41490) |
-- 作者:aleng1314 -- 发布时间:12/22/2006 11:02:00 AM -- DOS下C写串口的问题 本人在DOS环境下用TC进行串口通信编程,2种方法都调通了 能收能发 (即用 inportb和outportb 还有一种用 bioscom) 可现在有写些小问题 本人编写的是从机程序 要求接到命令 0xaa 后 立即 回复 0xaa 然后等待下步指令 本人在(inportb和outportb函数中)用循环读取串口的方式 读到AA后回复AA 因为是循环方式 他会在收到AA后不停的回复AA 这个怎么解决 希望能有达人给出这部分的源程序。 后来我用bioscom 函数又重新编写了 一个函数 我用了这样的方式 即主机发送后 等待 而 从机回复后等待下个指令 源程序如下 #include "stdio.h" #include "dos.h" #include "bios.h" #define PORT 0 void main() void send_port (int port,char cc) char receive_port (int port) int check_status(int port) 为什么我走到等待这步( while (check_status(0)!='1');)后 就走不下去了 我基本的思想是查询串口的状态 有信号过来 对数据进行处理 无 则等待 我本人希望能用inportb 和outportb 写 这样数据好处理 这个程序应为太大不好传 有高手达人能帮忙的 可和我电邮联系 aleng13142263.net 小弟感激不尽 |
-- 作者:aleng1314 -- 发布时间:12/22/2006 11:17:00 AM -- 错了 电邮是 aleng1314@263.net |
-- 作者:aleng1314 -- 发布时间:12/25/2006 9:25:00 AM -- UP |
-- 作者:卷积内核 -- 发布时间:12/25/2006 5:31:00 PM -- 1、我在VC下用过线程监视端口,在接收数据后将缓冲区数据转存到临时缓冲区,然后清空接收缓冲区。 2、“( while (check_status(0)!='1');)后 就走不下去了”-----没有sleep来执行其他函数的余地,你进去后就成了死循环啦,所以就出不来了。wait (0);如果相当于sleep的话,应该放到while内部才会起作用啊。
|
-- 作者:卷积内核 -- 发布时间:12/25/2006 5:37:00 PM -- receive_port(0); if(receive_port(0)==0xaa); send_port(0,0xaa); 这一段中第一行是不是有点重复? “receive_port(0)==0xaa”中也读端口了啊,为什么要读两次呢?如果你在第一次读出后把缓冲区清空的话,第二次永远不会成立的。 |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
61.523ms |