Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Формирование пакета данных 
:(
    Опции темы
Melevir
Дата 29.7.2009, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



Задача такая: нужно по COM порту отправить пакет заданной длинны (9 байт) заданного формата. С портом я разобрался - открыл, настроил, как передавать знаю. Не могу сам пакет сформировать. Сначала, как я понял, надо зарезервировать место в оперативной памяти (то ли GetMem(), то ли new...). Потом нужно в каждый байт записать свое значение. Предположим, в первый байт записать 1, во второй 2 и так далее.. Проблема как раз в том, что я не знаю, как это сделать. 
Помогите чайнику, а? Дайте пример...
PM MAIL   Вверх
mes
Дата 29.7.2009, 20:29 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Код

char Buf[9];

 smile 


--------------------
PM MAIL WWW   Вверх
Melevir
Дата 29.7.2009, 20:36 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



йо.. во я лох)))
PM MAIL   Вверх
GoldFinch
Дата 29.7.2009, 20:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



Melevir, лучше сделай структуру, и ее посылай. это удобнее.
(а еще удобнее сделать сериализацию, а еще удобнее.... ...)
PM MAIL ICQ   Вверх
Melevir
Дата 29.7.2009, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



GoldFinch, а смысл? Тут и так все не сложно - объявил, заполнил как надо, в WriteFile() указал ссылку на buf[0] и длинну 9.. Куда уж проще?smile

Следующий вопрос пожалуй тут же задам.. Вот приходит мне в ответ на этот запрос такой же пакет, при чем я знаю, что в байтах 5..7 хранится signed integer. Как мне его выколупать?
Что нибудь в духе
Код

integer(&buf[0]+4)

пойдет?

Это сообщение отредактировал(а) Melevir - 29.7.2009, 21:02
PM MAIL   Вверх
Cheloveck
Дата 29.7.2009, 21:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 3
Всего: 32



Цитата(Melevir @  29.7.2009,  21:57 Найти цитируемый пост)
байтах 5..7 хранится signed intege

5..7 - это три байта, интегер - 4.
Код

char buf[9]; // так у тебя приходит.
int x = *((int*)&buf[5])





--------------------
user posted image
PM Jabber   Вверх
andrew_121
Дата 29.7.2009, 21:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(Melevir @  29.7.2009,  20:57 Найти цитируемый пост)
байтах 5..7 хранится signed integer

это 3 байта. Т.е. там 3 целых?
Код

char i1 = buf[5];
char i2 = buf[6];
char i3 = buf[7];



--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
azesmcar
Дата 29.7.2009, 21:09 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(Melevir @  29.7.2009,  20:57 Найти цитируемый пост)
Следующий вопрос пожалуй тут же задам.. Вот приходит мне в ответ на этот запрос такой же пакет, при чем я знаю, что в байтах 5..7 хранится signed integer. Как мне его выколупать? 

Создай соответствующую своему пакету структуру и читай в нее
Код

struct message { /**/ }
ReadFile(hFile, &message, sizeof(message) ...);

Только вот не совсем понятно как это signed integer хранится в байтах 5..7? Размер integer-а не определен, но у тебя он скорее всего занимает 4 байта, если имеется ввиду unsigned short - тогда возможно. Но для переносимости лучше бы проверить размеры переменных в заголовочном файле limits и объявить правильную структуру.
Код

#if UINT_MAX == 0xFFFFFFFF
typedef int uint32_t;
#else
#error "Unsupported platform"
#endif

#if USHRT_MAX == 0xFFFF
typedef unsigned short uint16_t;
#else
#error "Unsupported platform"
#endif

что-то наподобие этого, теперь хотя бы получишь извещение о том, что размеры не соответствуют твоим ожиданиям на другой платформе и сделаешь все необходимое.
PM   Вверх
Melevir
Дата 29.7.2009, 21:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



нее.. просто это как бы стандартный макет, в указанных трех байтах хранятся данные.. В моем случае данные - signed int... и вот еще одна непонятность - каким фигом инт в 3 байта запихнут...
Вариант Cheloveck'а подходит мне кажется, но вариант azesmcar'а красивей и наглядней.. Буду пробовать, спасибоsmile

Это сообщение отредактировал(а) Melevir - 29.7.2009, 21:24
PM MAIL   Вверх
jonie
Дата 29.7.2009, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 15
Всего: 118



azesmcar главное не забыть про упаковку полей структуры, а-то начитаете...
Код

#pragma pack(push)
#pragma pack(1)
struct...
#pragma pack(pop)
это для VC подходит, насчет других компиляторов - почитайте их справку)


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
azesmcar
Дата 29.7.2009, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата(jonie @  29.7.2009,  22:28 Найти цитируемый пост)
azesmcar главное не забыть про упаковку полей структуры, а-то начитаете

совсем забыл про выравнивание. Куда же без него.


PM   Вверх
Cheloveck
Дата 30.7.2009, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1578
Регистрация: 26.7.2008
Где: Тула

Репутация: 3
Всего: 32



Цитата(Melevir @  29.7.2009,  22:15 Найти цитируемый пост)
непонятность - каким фигом инт в 3 байта запихнут...

никаким. В 5-литровую бутылке 10 литров не нальёшь. Либо выливать половину надо.  smile 


--------------------
user posted image
PM Jabber   Вверх
GoldFinch
Дата 30.7.2009, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



далось вам то что "инт" - 4 байта.
есть диапазон значений, если он влезает в 3 байта - значит достаточно 3х байт. 
а то что это называют "инт" - значит значения целые.
PM MAIL ICQ   Вверх
Melevir
Дата 30.7.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



GoldFinch, меня ввело в заблуждение то, что под любую инт переменную отводится именно 4 байта.. 
С тремя байтами разработчики весов там намудрили, разобрался я в этом..
Теперь я перед такой проблемой: в указанном выше пакете из 9и байт первые три надо отправить м единичным битом четности, остальные - с нулевым. Но бит четности - характеристика соединеия, разве нет? Как можно в одном пакете изменить эту настройку?
PM MAIL   Вверх
GoldFinch
Дата 30.7.2009, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



Melevir, по вашему вольному пересказу спецификации аппаратуры с которой вам надо работать, ничего не понятно. очевидно там гдето написано о каком "бите четности" речь.
PM MAIL ICQ   Вверх
Melevir
Дата 30.7.2009, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



Ну.. Бит четности - "лишний" бит после битов данных и перед стоп-битом (если он есть).
Я боюсь, их нужно вручную вставлять.. как это сделать я не очень представляю... Нашел на просторах инета пару человек с похожей проблемой, нигде решения нет. Вот. smile 
PM MAIL   Вверх
mes
Дата 31.7.2009, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Может познакомите нас с этой документацией ? Чтоб можно было представить картину того, с чем Вы имеете дело  smile 



--------------------
PM MAIL WWW   Вверх
andrew_121
Дата 31.7.2009, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Кодофей
****


Профиль
Группа: Завсегдатай
Сообщений: 3448
Регистрация: 3.1.2008

Репутация: 6
Всего: 33



Цитата(mes @  31.7.2009,  00:58 Найти цитируемый пост)
Может познакомите нас с этой документацией ? Чтоб можно было представить картину того, с чем Вы имеете дело

А зачем?
Вы люди опытные, сами должны догадаться smile


--------------------
Удалил аккаунт. Прощайте!
PM MAIL   Вверх
mes
Дата 31.7.2009, 01:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(andrew_121 @  31.7.2009,  00:13 Найти цитируемый пост)
А зачем?
Вы люди опытные, сами должны догадаться smile 

но к сожалению большинство из форумчан не телепаты smile  smile 
и хотя не против были помочь,  если бы им объяснили о чем речь, но из за неполноты рассказа тс. не могут этого сделать.  smile 

Это сообщение отредактировал(а) mes - 31.7.2009, 01:22


--------------------
PM MAIL WWW   Вверх
Melevir
Дата 31.7.2009, 01:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



Вся документация - разворот инструкции по эксплуатации, где описан протокол "9 байт" - авторское изобретение фирмы-создателя весов. Есть длинная и неинтересная таблица команд, меня интересует только одна из них - считывание веса. Обмен с прибором происходит пакетами по 9 байт таким форматом: первые три байта - адрес прибора (в моем случае нули, широковещательный), потом имя команды (1 байт), следующая тройка - данные (когда отправляю - пишу туда нули), дальше 1 байт на контрольную сумму и один - на символ конца строки. 
Смысл такой - я посылаю пакет с указанной в нем командой, мне возвращается такой же пакет, но в поле данных у него записано нужное значение.
Дальше цитирую инструкцию:

Байты 1, 2, 3 передаются с еденичным битом четности, остальные - с нулевым. Обмен производится на скорости 14400, с 1-м старт-битом, с 8ю битами данных, 1м битом четности и 1-м стоповым битом.

Все, больше не слова.. Загвоздка в чем: порт я открыл, запрос отправил, пытаюсь считать ответ, а его нет. Значит, что-то не то с запросом... Могу код написать если надо.
Еще раз благодарю всех за оказываемую помощьsmile
PM MAIL   Вверх
mes
Дата 31.7.2009, 01:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Melevir @  31.7.2009,  00:30 Найти цитируемый пост)
Загвоздка в чем: порт я открыл, запрос отправил, пытаюсь считать ответ, а его нет. Значит, что-то не то с запросом... Могу код написать если надо.

было бы неплохо  

Это сообщение отредактировал(а) mes - 31.7.2009, 02:04


--------------------
PM MAIL WWW   Вверх
Melevir
Дата 31.7.2009, 02:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



Код

//открытие порта
hCom = CreateFile( "COM1",
    GENERIC_READ | GENERIC_WRITE,
    0,    // exclusive access
    NULL, // no security attributes
    OPEN_EXISTING,
    FILE_ATTRIBUTE_NORMAL,
    NULL
    );
if (hCom == INVALID_HANDLE_VALUE)
  Memo1->Lines->Add("Ошибка открытия порта СОМ "+IntToStr(COMno+1)+"!");
else
  Memo1->Lines->Add("Порт СОМ "+IntToStr(COMno+1)+" открыт успешно.");
//формирование пакета
char buf[9];
buf[0] = 0;
buf[1] = 0;
buf[2] = 0;
buf[3] = '$10';
buf[4] = 0;
buf[5] = 0;
buf[6] = 0;
buf[7] = 1;
buf[8] = '#ODh';
//отправка
DWORD RealSend;
WriteFile(hCom,&buf[0],9,&RealSend,NULL);
Memo1->Lines->Add("Отправлено "+IntToStr(RealSend)+" байт.");

Далее в цикле происходит вот что:
Код

COMSTAT CurrentState;
unsigned long CodeError;
ClearCommError(hCom,&CodeError,&CurrentState);
int AvalibleBytes = CurrentState.cbInQue;
Memo1->Lines->Add("К чтению готово "+IntToStr(AvalibleBytes)+" байт.");

И хоть ты тресни - к чтению готово 0 байт. Если в цикле написать
Код

ReadFile(hCom,&buf[0]9,&RealGet,NULL);

то результата также никакого...
PM MAIL   Вверх
xvr
Дата 31.7.2009, 11:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Можете расслабится - динамически управлять настройками бита четности (для каждого передаваемого байта) на PC НЕВОЗМОЖНО. Причем невозможно на аппаратном уровне.
Единственное решение такое -
  •  Пишите свой драйвер последовательного порта
  •  Отключаете аппаратное FIFO в порту
  •  Перед передачей каждого байта ожидаете (просто вися на опросе UART'а) окончания передачи предыдущего байта
  •  Програмируете настройку бита четности и передаете байт
Мое мнение - легче сразу застрелится  smile 
Второй вариант - делается внешняя приблуда на МК, которая будет преобразовавать 8ми битные посылки от PC в 9ти битные. Приблуда включается между PC и весами

PS. Разработчикам весов нужно оторвать все, что висит за использование 9го бита  smile 

PM MAIL   Вверх
GoldFinch
Дата 31.7.2009, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



Цитата(Melevir @  31.7.2009,  02:30 Найти цитируемый пост)
с 8ю битами данных

если данные нада посылать отдельными байтами, зачем вам этот пакет?
PM MAIL ICQ   Вверх
Melevir
Дата 31.7.2009, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



xvr, способ с внешней приблудой отметаем сразу - есть стандартное ПО которое блин работает, так что надо как то так реализовать... программно... А первый способ - я наверное не понимаю, но мне кажется, что тогда каждый байт будет оформляться как пакет. Но это ведь не верно - в пакете должно быть 9 байт... Или нет...
GoldFinch , я вот теперь тоже думаю, что надо каждый отдельно посылать. Тогда надо сделать 3 посылки, поменять четность, остальные тоже отправить... Бред какой то.

Это сообщение отредактировал(а) Melevir - 31.7.2009, 11:33
PM MAIL   Вверх
GoldFinch
Дата 31.7.2009, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



а надо было всего-то почитать MSDN
http://msdn.microsoft.com/en-us/library/aa...28VS.85%29.aspx
Код

Parity

    The parity scheme to be used. This member can be one of the following values.
    Value    Meaning

    EVENPARITY
    2

     

    Even parity.

    MARKPARITY
    3

     

    Mark parity.

    NOPARITY
    0

     

    No parity.

    ODDPARITY
    1

     

    Odd parity.

    SPACEPARITY
    4

     

    Space parity.

видимо имелось ввиду EVENPARITY и ODDPARITY

Добавлено через 2 минуты и 40 секунд
Melevir, не, данные можно отправлять сразу по 9 байт, а каждый байт в пакет будет заворачиваться сам.

если есть готовое ПО, можно посмотреть как сделано в нем %)
PM MAIL ICQ   Вверх
Melevir
Дата 31.7.2009, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



GoldFinch, я наверное туплю... не понимаю что это дает smile 
PM MAIL   Вверх
GoldFinch
Дата 31.7.2009, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Завсегдатай
Сообщений: 2141
Регистрация: 30.11.2008

Репутация: 15
Всего: 26



наверное то что число единичных разрядов будет четным или нечетным, соответственно в правильном пакете будет 0 или 1 бит четности
для oddparity наверное будет 00000000 1
для evenparity наверное будет 00000000 0
PM MAIL ICQ   Вверх
Melevir
Дата 31.7.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



А к готовому исходников нету:( Только програмулина сама...
А с заворачианием отдельно каждого байта я так и не понял... Может, пример где есть?smile
PM MAIL   Вверх
xvr
Дата 31.7.2009, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 60
Всего: 223



Цитата(GoldFinch @ 31.7.2009,  11:31)
а надо было всего-то почитать MSDN
http://msdn.microsoft.com/en-us/library/aa...28VS.85%29.aspx
Код

Parity
    EVENPARITY
    MARKPARITY
    NOPARITY
    ODDPARITY
    SPACEPARITY

видимо имелось ввиду EVENPARITY и ODDPARITY

IMHO имелось в виду MARKPARITY и SPACEPARITY.
Но тогда данные придется отсылать по частям:
  •  Выставляется MARKPARITY 
  •  Отсылается первые 3 байта
  •  Завем FlushFileBuffers
  •  Дожидаемся, когда байты РЕАЛЬНО уйдут из UART'а (т.е. ждем дополнительно время передачи 3х байтов на 14400 + еще немного)
  •  Переключаем в SPACEPARITY
  •  Отсылаем остаток
  •  Завем FlushFileBuffers
  •  Дожидаемся, когда байты РЕАЛЬНО уйдут из UART'а
Данный способ называется 'удаление гланд автогеном через задницу'  smile 

PM MAIL   Вверх
Melevir
Дата 31.7.2009, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



Ох...
*Ушел читать про FlushFileBuffers, FIFO  и UART. *
PM MAIL   Вверх
mes
Дата 31.7.2009, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Melevir, эта Ваша инструкция ?
www.mera-device.ru/scales.pdf

Добавлено через 6 минут и 2 секунды
Поэксперементируйте для начала с командой 01 - чтоб исключить влияние других параметров.



--------------------
PM MAIL WWW   Вверх
Melevir
Дата 31.7.2009, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



mes, а говорили телепаты в отпуске))))
А какая разница какую команду забивать, один фиг неверно передается.. Но я попробую. Правда, только в понедельник:( 
PM MAIL   Вверх
mes
Дата 31.7.2009, 18:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Ваглянул на код - а это что за ужас  ??? 
Цитата(Melevir @  31.7.2009,  01:15 Найти цитируемый пост)
Код

buf[3] = '$10';
buf[8] = '#ODh';

 smile 

должно быть:
Код

buf[3] = 0х10;
buf[8] = 0х0D;


P.S. нда в инструкции даже не соизволили придерживаться одного способа именования шестнадцатиричных констант.
3 страницы текста - и лень оформить в надлежайшем виде - куда мир катится..
 smile 


Это сообщение отредактировал(а) mes - 31.7.2009, 18:23


--------------------
PM MAIL WWW   Вверх
Melevir
Дата 31.7.2009, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



а разве тот ужас не распознается как 16й код? тогда это хорошоsmile
 smile да, а какой функцией из шестнадцатеричной в десятичную СО перевести подскажите пожалуйста.
PM MAIL   Вверх
mes
Дата 31.7.2009, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Melevir @  31.7.2009,  21:05 Найти цитируемый пост)
 да, а какой функцией из шестнадцатеричной в десятичную СО перевести подскажите пожалуйста. 

зачем переводить ? пишите сразу в шестндцатиричной (0х..) или десятиричной - компилятор сам переведет как ему надо (в двоичную smile )

Добавлено через 5 минут и 54 секунды
Цитата(Melevir @  31.7.2009,  21:05 Найти цитируемый пост)
а разве тот ужас не распознается как 16й код? 

'#ODh' = 692397416, a  0x0D = 13
'$10' = 2371888, a  0x10 = 16

 smile 






--------------------
PM MAIL WWW   Вверх
Melevir
Дата 31.7.2009, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



то есть если я напишу
Код

int a = 0x0D+3;

то а = 16? отлично...
PM MAIL   Вверх
mes
Дата 31.7.2009, 23:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(Melevir @  31.7.2009,  21:29 Найти цитируемый пост)
то а = 16?

 smile 


--------------------
PM MAIL WWW   Вверх
kolobok0
Дата 6.8.2009, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 24.12.2008

Репутация: нет
Всего: 2



Цитата(Melevir @ 29.7.2009,  19:49)
..Помогите чайнику, а?...

марку весов назови. это раз.
второе - от производителя запроси под досик драйвер.
третье - дезасемблируй и поучись как нуна засылать данные на них.


удачи те
(круглый)
ЗЫ
LP15 что ли? баян...
PM MAIL   Вверх
Melevir
Дата 8.8.2009, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 48
Регистрация: 10.3.2008

Репутация: нет
Всего: нет



забил болт на это на все... выклянчил у разрабов библиотеку функций... Теперь все просто, но косячно...
В общем, есть одна единственная функция, которая считывает чертов вес. Один раз считывает - все норм. Пихаю в цикл - и периодически вылезает ошибка (нет доступа к порту). Причем может вылезти, а может и нет.. К порту никто кроме моего творения не просится.. Не понимаю...
ПС. Весы - ПВм - 3\30.
PM MAIL   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1270 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.