Hi,
I’m now working on a serial communication program. Write on ser3 and receive
the data on ser4. ser3 and ser4 are directly wired. Basically, it works
well. Only a little annoying problem is the first byte I received is of
wrong type. As follows:
In my code,
char data[22]; //to contain the received data from ser4
to display the result, I use:
printf(“the first byte is 0x%x.\n”,data[0]);
The first byte should be 0xb8. But when the program runs, the result is very
weird. the data[0]=0xffffffb8.
Similarly, the data[1]=0xffffffa8. However, from the data[2] on, the data
are of correct type. For example, data[2]=ox4;…
Can anybody explain this problem? What’s wrong with it?
“Marian Oklapek” <oklapek@pobox.sk> wrote in message
news:3F953A82.1050908@pobox.sk…
Hello Yijun,
change yours type of data to unsigned char data[22];
You need this because 0xb8 when store in a char is a negative number. When
the char is passed to the printf it`s automaticaly promoted to an integer
and thus subject to sign extension thus 0xb8 becomes 0xffffffb8.
Best regards
Marian.
Yijun Zou wrote:
Hi,
I’m now working on a serial communication program. Write on ser3 and
receive
the data on ser4. ser3 and ser4 are directly wired. Basically, it works
well. Only a little annoying problem is the first byte I received is of
wrong type. As follows:
In my code,
char data[22]; //to contain the received data from ser4
to display the result, I use:
printf(“the first byte is 0x%x.\n”,data[0]);
The first byte should be 0xb8. But when the program runs, the result is
very
weird. the data[0]=0xffffffb8.
Similarly, the data[1]=0xffffffa8. However, from the data[2] on, the
data
are of correct type. For example, data[2]=ox4;…
Can anybody explain this problem? What’s wrong with it?
\
Hello Yijun,
change yours type of data to unsigned char data[22];
Best regards
Marian.
Yijun Zou wrote:
Hi,
I’m now working on a serial communication program. Write on ser3 and receive
the data on ser4. ser3 and ser4 are directly wired. Basically, it works
well. Only a little annoying problem is the first byte I received is of
wrong type. As follows:
In my code,
char data[22]; //to contain the received data from ser4
to display the result, I use:
printf(“the first byte is 0x%x.\n”,data[0]);
The first byte should be 0xb8. But when the program runs, the result is very
weird. the data[0]=0xffffffb8.
Similarly, the data[1]=0xffffffa8. However, from the data[2] on, the data
are of correct type. For example, data[2]=ox4;…
Can anybody explain this problem? What’s wrong with it?
\
Hi Mario and Marian,
I do as you advised and it’s OK now.
Thank you both!
Yijun
“Mario Charest” postmaster@127.0.0.1 дÈëÏûÏ¢ÐÂÎÅ
:bn3amm$d56$1@inn.qnx.com…
“Marian Oklapek” <> oklapek@pobox.sk> > wrote in message
news:> 3F953A82.1050908@pobox.sk> …
Hello Yijun,
change yours type of data to unsigned char data[22];
You need this because 0xb8 when store in a char is a negative number.
When
the char is passed to the printf it`s automaticaly promoted to an integer
and thus subject to sign extension thus 0xb8 becomes 0xffffffb8.
Best regards
Marian.
Yijun Zou wrote:
Hi,
I’m now working on a serial communication program. Write on ser3 and
receive
the data on ser4. ser3 and ser4 are directly wired. Basically, it
works
well. Only a little annoying problem is the first byte I received is
of
wrong type. As follows:
In my code,
char data[22]; //to contain the received data from ser4
to display the result, I use:
printf(“the first byte is 0x%x.\n”,data[0]);
The first byte should be 0xb8. But when the program runs, the result
is
very
weird. the data[0]=0xffffffb8.
Similarly, the data[1]=0xffffffa8. However, from the data[2] on, the
data
are of correct type. For example, data[2]=ox4;…
Can anybody explain this problem? What’s wrong with it?
\