Шиј*_*гор 3 c linux serial-port
我有unsigned int DataBAR
并想发送char
到串口!
我的代码是:
unsigned char Printer_buffer[PRN_BUFFER_SIZE];
unsigned int DataBAR, DataD, DataT;
for (i = 0; i < 8; i++) {
SumaN = SumaN + (Printer_buffer[i] & 0x0F);
DataBAR = (Printer_buffer[i] & 0x0F) + 0x30;
nbytes = write(fd,DataBAR ,1); //want to send to the serial port
printf("write error code is %d !!!!!!!!!\n", errno);
if (nbytes != 1) {
printf("error writing on serial port!!!\n");
}
sleep(1);
SumaP = SumaP + ((Printer_buffer[i] >> 4) & 0x0F);
DataBAR = ((Printer_buffer[i] >> 4) & 0x0F) + 0x30;
nbytes = write(fd, DataBAR, 1);
printf("write error code is %d !!!!!!!!!\n", errno);
if (nbytes != 1) {
printf("error writing on serial port!!!\n");
}
sleep(1);
}
Run Code Online (Sandbox Code Playgroud)
write
返回errno=14
如何解决这个问题?
在 CI 中使用 pic18f 使用此代码并且它正在工作:
for (i=0;i<8;i++){
SumaN=SumaN+(Printer_buffer[i] & 0x0F);
DataBAR=(Printer_buffer[i] & 0x0F) + 0x30;
while(BusyUART1());
putcUART1(DataBAR);
SumaP=SumaP+((Printer_buffer[i]>>4) & 0x0F);
DataBAR=((Printer_buffer[i]>>4) & 0x0F) + 0x30;
while(BusyUART1());
putcUART1(DataBAR);
}
Run Code Online (Sandbox Code Playgroud)
我现在在这里,感谢您的帮助!!!
write()
就是int write( int fd, void *buf, int n )
这样,你不能传递一个整数作为第二个参数。我猜你没有包含unistd.h
否则你的代码甚至不应该编译。而是参考手册页并调用
write( fd, &DataBAR, 1 )
Run Code Online (Sandbox Code Playgroud)
但请注意,这取决于您系统的字节序,是通过这样做写入最高位还是最低位字节。更好地定义DataBAR
为 char (或将值复制到 char 中c
并使用&c
in write()
)