|
USART запрос/ответ, как принять массив через функцию getchar() ? |
|
|
|
 |
Ответов
|
Dec 20 2011, 19:27
|

Участник

Группа: Участник
Сообщений: 62
Регистрация: 22-07-09
Пользователь №: 51 457

|
Цитата(toweroff @ Dec 20 2011, 21:48)  а не проще вот так? Код if (temp & 0x80) { // если отрицательное да и %02u - вроде как тут нужно %03 d, одно место останется под знак, да и число будет выводиться как обычное десятичное знаковое, а не беззнаковое Решил потестировать немного: Код unsigned char temp = 0x19; char convert[16]; ... temp = temp - 0x28; if (temp & 0x80) { sprintf(convert,"-%03d",temp); put_string(115,4,convert,0xF800,1); } else { sprintf(convert,"%02d",temp); put_string(115,4,convert,0xF800,1); } Если написать unsigned char temp = 0x47, то выводится число 31, всё правильно (47hex - 28hex = 1F hex ->31dec) Но если написать unsigned char temp = 0x19, то выводится число -241, а не -15 (19hex - 25hex = FFFFFFFFFFFFFFF1 hex -> -15dec) Всё равно не понимаю как минус вывести. P.S. F1 hex = 241 dec
Сообщение отредактировал mr_smit - Dec 20 2011, 19:45
|
|
|
|
|
Dec 20 2011, 19:44
|

Гуру
     
Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514

|
Цитата(mr_smit @ Dec 20 2011, 23:27)  Решил потестировать немного: Код unsigned char temp = 0x19; char convert[16]; ... temp = temp - 0x28; if (temp & 0x80) { sprintf(convert,"-%03d",temp); put_string(115,4,convert,0xF800,1); } else { sprintf(convert,"%02d",temp); put_string(115,4,convert,0xF800,1); } Если написать unsigned char temp = 0x47, то выводится число 31, всё правильно (47hex -> 71dec -> 71-40) Но если написать unsigned char temp = 0x19, то выводится число -241, а не -15 (19hex -> 25dec -> 25-40) ну тогда вот так: Код unsigned char temp = 0x19; char convert[4]; // куда больше-то? ... temp = temp - 40; sprintf(convert, "%s%02d", ((temp & 0x80)? "-": ""), ((temp & 0x80)? (unsigned char)(0-temp): temp) ); put_string(115,4,convert,0xF800,1); ну это на скорую руку. Скорее всего, что-то не так с отображением sprintf, должно быть нормально. Сама она должна разруливать отрицательные числа
|
|
|
|
Сообщений в этой теме
mr_smit USART запрос/ответ Dec 17 2011, 17:20 AHTOXA Да, заведите второй буфер, для пакета. Заведите сч... Dec 17 2011, 19:08 ILYAUL 80 F1 10 26 , а вот 0x26 это счётчик передаваемых ... Dec 17 2011, 20:33 mr_smit Цитата(ILYAUL @ Dec 17 2011, 23:33) 80 F1... Dec 17 2011, 21:24  AHTOXA Кольцевой буфер оставьте, он вам никак не мешает. ... Dec 18 2011, 05:13 mr_smit Просто я не понимаю каким образом мне вызывать get... Dec 18 2011, 06:24 mr_smit В общем убрал кольцевой буффер и сделал вот так:
К... Dec 18 2011, 09:07 mr_smit И еще:
Кодunsigned char startCommunication[... Dec 18 2011, 12:14 AHTOXA Цитата(mr_smit @ Dec 18 2011, 15:07) Выда... Dec 18 2011, 14:06 mr_smit AHTOXA, спасибо!!!!!
Кодvoid S... Dec 18 2011, 18:20 AHTOXA Цитата(mr_smit @ Dec 19 2011, 00:20) А во... Dec 18 2011, 21:06 _Артём_ Цитата(mr_smit @ Dec 18 2011, 20:20) А мо... Dec 18 2011, 21:26 sigmaN ЦитатаКодwhile (*command) {} там наверно д... Dec 18 2011, 20:39 mr_smit Ну примерно понял. Спасибо. И ещё. Как лучше орган... Dec 19 2011, 07:48 sigmaN ЦитатаЗавести переменную битовую как флаг разрешен... Dec 19 2011, 08:16 mr_smit Цитата(sigmaN @ Dec 19 2011, 11:16) Вот т... Dec 19 2011, 08:48 mr_smit У меня тут вопрос появился. Нигде не смог найти т... Dec 20 2011, 11:07 toweroff как обычно, наверное... знаковый байт, старший бит... Dec 20 2011, 12:17 mr_smit Ладно, мне надо вычесть 40. Т.е. 40 dec в hex буде... Dec 20 2011, 17:35 Палыч Цитата(mr_smit @ Dec 20 2011, 21:35) Ладн... Dec 20 2011, 17:56 toweroff Цитата(mr_smit @ Dec 20 2011, 21:35) Кодi... Dec 20 2011, 18:48 mr_smit Цитата(toweroff @ Dec 20 2011, 15:17) ...... Dec 20 2011, 19:51 XVR Жуть, столько телодвижений вместо того, что бы про... Dec 21 2011, 11:18 toweroff Цитата(XVR @ Dec 21 2011, 15:18) signed c... Dec 21 2011, 11:57 mr_smit Цитата(XVR @ Dec 21 2011, 14:18) Жуть, ст... Dec 21 2011, 18:10 toweroff Цитата(mr_smit @ Dec 21 2011, 22:10) А в ... Dec 21 2011, 18:14 _Артём_ Цитата(mr_smit @ Dec 21 2011, 20:10) Спас... Dec 21 2011, 21:09 mr_smit Просто вроде как sizeof должна возвращать длину ма... Dec 21 2011, 22:03 _Артём_ Цитата(mr_smit @ Dec 22 2011, 00:03) Прос... Dec 21 2011, 23:11  XVR Цитата(_Артём_ @ Dec 22 2011, 03:11) Но в... Dec 22 2011, 10:24 mr_smit Всем спасибо! Dec 22 2011, 19:31
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|