Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

write() return errno 14 why?

I have unsigned int DataBAR and want to send char to the serial port!

My code is:

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 returns errno=14 how to solve this problem?

With pic18f in C I use this code and it is working:

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

I`m now in this and thanks for your help!!!

like image 377
Шијаковски Глигор Avatar asked Jul 17 '26 05:07

Шијаковски Глигор


1 Answers

write() is int write( int fd, void *buf, int n ) so you must not pass an integer as second parameter. I guess you haven't included unistd.h otherwise your code shouldn'et even compile. Instead refer to the man page and call

write( fd, &DataBAR, 1 )

But be aware that it depends on the endiannes of your system whether you write the most or the least significant byte by doing that. Better define DataBAR as char (or copy the value into a char c and use &c in write())

like image 164
Ingo Leonhardt Avatar answered Jul 18 '26 19:07

Ingo Leonhardt



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!