I just saw that your tx buffer is different from your expected string
char tx_buf[9] = {0xC5,0xC3,0x01,0x00,0x00,0x00,0x00,0x00,0x76};
string C5C301000000000076

0x00 doesn't mean two times 0. If you want to see 18 characters so you need
to send 18 characters.

2015-02-11 8:32 GMT+01:00 Tux Leonard <[email protected]>:

> Could you show us the code on the receiving side?
>
> How many characters do you receive?
> Do you convert the receive bytes to strings before printing them?
>
> 2015-02-11 6:21 GMT+01:00 liyaoshi <[email protected]>:
>
>> I only get a case with insert several zero on special platform a few
>> years ago
>>
>> Finally , I can only use ascII string convert first .then transfer over
>> uart and convert back in receiver
>>
>> I dont know if this is related with chipset , This case is only happen on
>> QNX platform 6.4.1
>>
>> 2015-02-11 11:57 GMT+08:00 Przemek Klosowski <[email protected]
>> >:
>>
>>> I am not sure if I understand--please clarify.
>>>
>>> On Sun, Feb 8, 2015 at 11:25 AM, oli4gate <[email protected]>
>>> wrote:
>>> > Hi,
>>> >
>>> > over the uart port I would like to send out following hexadecimal
>>> string
>>> > C5C301000000000076.
>>> ...
>>> >     unsigned char tx_buf[9] =
>>> > {0xC5,0xC3,0x01,0x00,0x00,0x00,0x00,0x00,0x76};  //unsigned is 0<>255
>>> signed
>>> > is -128<>127
>>> >     unsigned char *p_tx_buf = &tx_buf[0];  //points to the first
>>> element of
>>> > the tx_buf
>>> >
>>> >    int fd;
>>> >
>>> >     //open uart2 for tx/rx, not controlling device
>>> >     if((fd = open("/dev/ttyO4", O_RDWR | O_NOCTTY | O_NDELAY)) < 0)
>>> >         printf("Unable to open uart2 access .\n");
>>> >     else
>>> >         printf("uart2 opened succesfully.\n");
>>> >
>>> >    if(write(fd,&tx_buf,sizeof(tx_buf))<0)
>>>
>>> Ok, so you are not sending the hex string, but rather the binary
>>> values. I never ran it this way so I am not sure what might prevent it
>>> from working this way, but the following stack overflow discussion
>>> might be helpful:
>>>
>>> http://stackoverflow.com/questions/506805/binary-data-over-serial-terminal
>>>
>>> >             printf("ERROR : tx not send.\n");
>>> >         else
>>> >             for(unsigned int i = 0; i < sizeof(tx_buf); ++i)
>>> >                 {
>>> >                     std::cout << std::hex << (int)tx_buf[i];
>>> >                 }
>>> >             printf(" : tx send \n");
>>>
>>> You do realize that the 'else' block contains just the for() {} loop
>>> and not the printf statement?
>>> (your indentation seems to indicate otherwise)  I recommend using
>>> curly braces always even if the conditional block has just one
>>> statement.
>>>
>>> --
>>> For more options, visit http://beagleboard.org/discuss
>>> ---
>>> You received this message because you are subscribed to the Google
>>> Groups "BeagleBoard" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  --
>> For more options, visit http://beagleboard.org/discuss
>> ---
>> You received this message because you are subscribed to the Google Groups
>> "BeagleBoard" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
For more options, visit http://beagleboard.org/discuss
--- 
You received this message because you are subscribed to the Google Groups 
"BeagleBoard" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/d/optout.

Reply via email to