對於編程來說,沒什麼區別,通過控制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下串口的驅動。