Я новичок во встроенной системе на Linux. Я начинаю с простой программы последовательной связи на моем дружественном KIT, tiny6410, и у меня есть эта проблема. Это мой код:Последовательная связь с FriendlyARM KIT на Linux
#include <stdio.h> // standard input/output functions
#include <stdlib.h>
#include <string.h> // string function definitions
#include <unistd.h> // UNIX standard function definitions
#include <fcntl.h> // File control definitions
#include <errno.h> // Error number definitions
#include <termios.h> // POSIX terminal control definitionss
#include <sys/time.h> // time calls
#include <string.h>
/* Ten file thiet bi cong com
- tren PC: /dev/ttyUSB0 (USB2COM)
- tren KIT: /dev/ttyS0;
*/
int main(int argc, char** argv)
{
char ch;
int fd;// n;
char *DeviceName;
struct termios port_settings; //Cau truc de luu tru cau hinh uart
if(argc>1)
{
DeviceName = (char*)malloc(strlen(argv[1])+1);
strcpy(DeviceName, argv[1]); //Lay tham so nhap vao
//printf("Device Name=%s\n", DeviceName);
}
else
DeviceName = "/dev/ttyUSB0"; //Cong com mac dinh
//Open com port
fd = open(DeviceName, O_RDWR | O_NOCTTY | O_NDELAY);
if(fd<0)
{
printf("Open com port %s failed\n", DeviceName);
return fd;
}
fcntl(fd, F_SETFL, FNDELAY); /* Configure port reading */
//Cau hinh tham so com port
//baudrate 9600, 8N1
cfsetispeed(&port_settings, B9600);
cfsetospeed(&port_settings, B9600);
port_settings.c_cflag &= ~PARENB; //Set no parity
port_settings.c_cflag &= ~CSTOPB; //Set 1 stop bit
port_settings.c_cflag &= ~CSIZE; //Set 8 bit data using mask bit
port_settings.c_cflag |= CS8;
port_settings.c_cflag &= ~CRTSCTS; //No hadware hanshaking
tcsetattr(fd, TCSANOW, &port_settings); // apply the settings to the port
while(1)
{
char key = getchar();
ch = key;
write(fd, &ch, 1);
}
close(fd);
return 0;
}
И я получил "открытый порт COM/DEV/ttyUSB0 не удалось" сообщение об ошибке.
Проверьте значение 'errno' после' open' вызова , Не уверен в '/ dev/ttyUSB0', но для обычных COM-портов, таких как'/dev/ttyS0', вы должны запускаться как root, чтобы их можно было открыть. – mathematician1975
Значение errno равно 16. Что это значит? –
Используйте этот http://man7.org/linux/man-pages/man3/strerror.3.html, чтобы получить строку, которая сообщает вам, что ошибка основана на значении errno. – mathematician1975