Я как отправить некоторые команды микроконтроллеру LPC 1786 через последовательный порт. Для выполнения этой задачи я открываю последовательный порт, используя этот код.Последовательная связь с LPC1786
struct termios tio;
int tty_fd;
memset(&tio,0,sizeof(tio));
tio.c_iflag = 0;
tio.c_oflag = 0;
tio.c_cflag = CS8|CREAD|CLOCAL; // 8n1, see termios.h for more information
tio.c_lflag = 0;
tio.c_cc[VMIN] = 1;
tio.c_cc[VTIME] = 5;
tty_fd = open(device, O_RDWR | O_NONBLOCK);
cfsetospeed(&tio, B9600); // 115200 baud
cfsetispeed(&tio, B9600); // 115200 baud
tcflush(tty_fd, TCIFLUSH);
Это для встроенной системы Linux, использующей (iMX53). Когда я компилирую код на своем ПК и запускаю его. Я получаю это:
sent: ?
recieve: Sinchronized<CR><LF>
sent: Sinchronized<CR><LF>
recieve: Synchronized<CR>OK<CR><LF>
sent: 16000<CR><LF>
recieve: 16000<CR>OK<CR><LF>
ведьма в порядке. Когда я переписываю его и загружаю в систему, я получаю это.
Sent: ?
HEX: 0x53 0x79 0x6E 0x63 0x68 0x72 0x6F 0x6E 0x69 0x7A 0x65 0x64 0xA 0xA 0x53 0x79 0x6E 0x63 0x68 0x72 0x6F 0x6E 0x69 0x7A 0x65 0xA
ASCII: SynchronizedSynchronizedOKOKnchronized1K024K024chronized1
Sent: ?
HEX: 0xA 0xA 0xA 0xA 0xA 0xA 0xA 0x30 0xA 0xA 0x31 0xA 0xA 0xA 0xA 0xA 0xA 0x34 0xA 0xA 0x31 0xA 0xA 0xA 0xA 0xA 0xA 0xA 0xA 0xA 0A
ASCII: 014141hronized1111111ronized1
ведьма вид руин мой день. Для записи и чтения я использую функции чтения &. Я уверен, что это связано с тем, как я открываю последовательный порт. Но что случилось. Я пробовал разные настройки, но с небольшим успехом. В лучшем случае в качестве ответа я получаю «????? 1 ???». И большую часть времени читать нечего.
В какой скорости вы работаете? Такие проблемы всегда пахнут несоответствиями скорости передачи. Я вижу 9600 в вашем коде, 115200 в комментарии и понятия не имею, что это на стороне хоста: P – slugonamission
Я тестировал разные скорости. хост -> скорость 9600 бод; stty:/dev/ttymxc4 intr =^C; quit =^\; erase =^?; kill =^U; eof =^D; eol =; eol2 = ; start =^Q; stop =^S; susp =^Z; rprnt =^R; werase =^W; lnext =^V; flush =^O; min = 1; time = 0; -parenb -parodd cs8 HUPCL -cstopb CREAD CLOCAL -crtscts -ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr ICRNL IXON -ixoff -iuclc -ixany -imaxbel OPOST -olcuc -ocrnl ONLCR -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0 isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke –
DimDqkov
Это странно. Вы уверены, что входные часы вашего процессора верны? – slugonamission