阅读:1387回复:10
请教串行通讯?
我用C做的,先初始化,然后向3f8传送命令,通过com1 口的外接rs232线连接到一个pic,然后我不断检测3fd,如果接受缓冲区准备就绪,我就将数据出,可是运行的时候,没有任何数据返回,但检测到com1是busy的。
我的问题是我这样做有什么不对的地方,还有我怎么才能知道是我的数据没传过去,还是要读的数据没读出来? |
|
沙发#
发布于:2003-01-22 21:24
我给你贴的那个程序不是可以吗? :D
|
|
|
板凳#
发布于:2003-01-22 21:26
那是vc的我不动呀,你给我讲讲吧,我用c来写
|
|
地板#
发布于:2003-01-22 21:32
不过,我觉得直接检测3f8就行了,没有必要去检测3fd吧?不过我是用汇编写的,没用C写过! :D
[编辑 - 1/22/03 by lxcomcn] |
|
|
地下室#
发布于:2003-01-22 21:37
那是vc的我不动呀,你给我讲讲吧,我用c来写我给你的程序不是有注解吗?其实就是引用的MSComm Control控件,MSDN里有解释,如果有问题就给我发Email吧! :D [编辑 - 1/22/03 by lxcomcn] |
|
|
5楼#
发布于:2003-01-22 21:47
汇编的也行,我可以看看源码吗,你还保存的吗!
我不是一点不懂vc,我对它可能有一种与生具来的反感,我这个人就是有这个坏毛病 |
|
6楼#
发布于:2003-01-22 21:54
我在读取接受缓冲区时,应该怎么读取呢?直接用对端口的操作进行读取吗?那我也不知道自己读取的是接受缓冲区的哪一部分,我在“系统设置”中将com1口的 fifo缓冲区勾掉了,这部分有问题吗?
|
|
7楼#
发布于:2003-01-22 22:04
我觉得你对串口的初始化没做好。我以前也是和你一样做的,不过是和c51通信,用rs232是一点问题都没有的。我是对整个串口寄存器全部重新设置,没有用系统设置里的,你试试,那样应该可以的。
|
|
|
8楼#
发布于:2003-01-22 22:09
汇编的也行,我可以看看源码吗,你还保存的吗!汇编的源码我现在已经没有了,就简单地说说吧。先对3fb初始化,DLAB位置0,设置字长、校验位、停止位,然后,将3fb的DLAB位置1,初始化3f8和3f9,用来设置波特率。哦!对了,刚才我说错了,要用到3fd,对它的THRE位进行判断,循环检测。 |
|
|
9楼#
发布于:2003-01-25 12:26
CreatFile(////.//com1,..,..)打开com1
就可以用WriteFile(hCom,..,...) ReadFile()了 当然还要进行必要的设置。 |
|
|
10楼#
发布于:2003-05-07 15:53
请问串口的3f8-3ff寄存器时如何分配的?我查不到,波特率应该如何设置啊?谢谢!
|
|