我想通過串口發送一些chars
。問題是,如果我發送A
(ASCII 65
),我收到其他東西(ASCII 225
)。我發送的任何字母或字符串都會收到其他內容。如何解決串口傳輸錯誤?
這裏是我的代碼:
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>
int open_port(void)
{
int port;
port = open("/dev/ttySAC3", O_RDWR | O_NOCTTY | O_NDELAY);
if (port == -1){
perror("open_port: Unable to open /dev/ttySAC3 - ");
}else{
fcntl(port, F_SETFL, 0);
}
return (port);
}
int main()
{
int port,n;
char str = 'A';
struct termios specs;
port = open_port();
tcgetattr(port, &specs);
specs.c_cflag = (CLOCAL | CREAD);
specs.c_oflag = (OPOST | CR3| CS8);
cfsetospeed(&specs,B9600);
tcsetattr(port,TCSANOW,&specs);
n = write(port, &str, 1);
if (n<0) {
printf("\nError");
}
close(port);
return(0);
}
我用示波器測量,這是離開設備的數據,所以它不是我的電腦上讀取問題。
我在網上搜索了最近2天,無法弄清楚我做錯了什麼。一些幫助將不勝感激。
你怎麼接收數據? – anishsane
從我的設備中,一個'tiny210'我有一條串口線連接到我的電腦,在那裏我使用'Realterm'來讀取數據。 –
檢查波特率,流量控制等其他參數。另外,嘗試'minicom'或'kermit',然後嘗試您的PC端'C'代碼。這個問題可能在微控制器端代碼中。 – anishsane