对于编程来说,没什么区别,通过控制485的使能端该程序完全可以使用。唯一的区别就是你在发送的时候通过程序把485的控制脚拉高,接收的时候把他拉低就可以了。至于电气方面的区别:RS232是全双工,可以同时收发,RS485是半双工,不能同时收发,还有电平信号不一样,这个编程你就不要理了。
‘贰’ 怎样用C/C++在Linux系统实现串口通讯
Linux下面有设备文件
串口装好驱动后 会显示在dev下
然后对这个设备文件进行读写即可。
比windows要简单的多。
‘叁’ 请教Linux串口通信的接收程序的一个问题
之前基于IBM deveplopworks社区的代码,做了串口初始化和发送的程序,今天在此基础上添加了读取串口数据的程序。首先是最简单的循环读取程序,第二个是通过软中断方式,使用信号signal机制读取串口,这里需要注意的是硬件中断是设备驱动层级的,而读写串口是用户级行为,只能通过信号机制模拟中断,信号机制的发生和处理其实于硬件中断无异,第三个是通过select系统调用,在没有数据时阻塞进程,串口有数据需要读时唤醒进程。第二个和第三个例子都能用来后台读取数据,值得学习。
参考
http://blog.csdn.net/bg2bkk/article/details/8668576
‘肆’ linux下实现了双向串行通信,目前只能发送字符串,但如何实现:1.汉字的通信 如何实现 2.聊
1、串口有通信字节位数限制,所以中文最好用 base64 编码后发送,保证都是 7bit 编码。
2、聊天窗口看你水平了,图形界面函数库 GTK 或者 QT 自己选。字符界面用 ncurses ,不过在字符界面跑中文支持需要外挂程序,cce 或者 zhcon 都很老了,但没别的可选了。
3、中文输入图形界面现在都是统一的,图形界面你的系统能用中文就都能用。字符界面中文环境会模拟成一个新的字符终端。
4、编程时不要用中文直接写道源代码里。最好用外挂式,源代码里面最好只有 ASCII 字符。
5、Linux 系统内部统一用 UTF8 处理,你的程序在输出输入时,最好做一次当前系统编码和UTF8的互相转换。
6、当前 Linux 默认基本都是 UTF8 ,但不排除有其他想法的发行版使用别的编码。
‘伍’ C语言串口设置问题:linux下怎么用C语言设置串口通讯的MARK, SPACE校验
struct termios opt;
memset(&opt, 0, sizeof(opt));
cfmakeraw (&opt);
opt.c_cflag |= CLOCAL | CREAD | CS8; //8bit
opt.c_cflag &= ~(PARENB | CSTOPB); //no parity check,no stop bit
opt.c_cc[VMIN] = 1;
opt.c_cc[VTIME] = 0; /*read waite for x*0.1s*/
更多知识看看unix环境高级编程-终端编程哪一章,或网络linux串口编程。
‘陆’ 很简单的linux串口编程问题:fd = open("/dev/ttysn",|XXXXXXX)。其中哪个ttysn具体是多少
没做过linux下的,提供个建议,看成不成。
PC端的串口必须配置正确。 要确定 与 板子的 波特率 要一致。
此外, PC端作为串口总控端, COM端口配置只针对于PC端自己。 比如你使用了COM1口,那么定义的时候,(ttysn 应该是 ttysn1 --- 没用过linux下的不知道是不是在这配置,你要查)
板子端的COM口配置也是只针对于自己,如果你使用板子的COM1和COM2, 那么程序中初始化的时候需要同时把COM1/2都初始化,那么PC端就可以连接任意的板子端口。
PC(COM1) ---- 板子(COM1) 或 PC(COM1) ---- 板子(COM2)
在确保板子硬件没有问题的情况下,且PC端程序无误, 如果PC端无法接收到数据, 尝试
在PC端编写程序时,在 接收数据之前 加上时间延迟。 也就是说,PC发出数据后需要等待
一段时间才能接收到板子 返回的数据。 具体时间测试来看。
‘柒’ Linux下的串口通信C语言代码和 Windows下的代码一样吗
简单说几句吧,linux下的设备都是文件,流程也无非是open, read/write, close等
当然,串口你得设置各种属性才行对不对,比如在win下的超级终端就设置了波特率啊,停止位啊,奇偶校验啊什么的,这些属性都通过
int tcgetattr(int fd, struct termios *termios_p);
int tcsetattr(int fd, int optional_actions, const struct termios *termios_p);函数来设置。
完整代码吗自己去google,一把一把的,其实最重要的是设置好属性,剩下的就是read,write的问题咯。
希望对你有用
对了,了解终端函数的详情请在linux命令行终端获取: man termios
‘捌’ linux串口通信代码解释,一句一句来
简单说几句吧,linux下的设备都是文件,流程也无非是open, read/write, close等
当然,串口你得设置各种属性才行对不对,比如在win下的超级终端就设置了波特率啊,停止位啊,奇偶校验啊什么的,这些属性都通过
int tcgetattr(int fd, struct termios *termios_p);
int tcsetattr(int fd, int optional_actions, const struct termios *termios_p);函数来设置。
完整代码吗自己去google,一把一把的,其实最重要的是设置好属性,剩下的就是read,write的问题咯。
希望对你有用
对了,了解终端函数的详情请在linux命令行终端获取: man termios
‘玖’ linux系统怎么串口通信
装个minicom吧,实现串口通信。
‘拾’ 怎么在Linux下通过串口通信啊树莓派!
首先是你的平台是什么(cpu),用ioremap函数映射相关寄存器地址,然后就设置串口(uart)寄存器。我只会ARM平台,linux下串口的驱动。