3

我有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);
}

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);               
}

我现在在这,谢谢你的帮助!!!

4

1 回答 1

5

write()所以int write( int fd, void *buf, int n )你不能将整数作为第二个参数传递。我猜你没有包含,unistd.h否则你的代码甚至不应该编译。而是参考手册页并调用

write( fd, &DataBAR, 1 )

但是请注意,这取决于您的系统的字节序,您是通过这样做写入最高有效字节还是最低有效字节。更好地定义DataBAR为 char (或将值复制到 charc并使用&cin write()

于 2013-07-12T13:32:55.813 回答