1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.

MS VS C++ преобразование

Тема в разделе "Программирование", создана пользователем электрик, 02.12.11.

  1. электрик

    электрик Активный участник

    3.746
    180
    есть переменная String^ tmp[2] равная "A0" (строка с 2 символами).
    Нужно из нее получить unsigned char со значением 0xA0. Ну или 160 в десятичном.
    Как это сделать на Visual Studio 2005 C++?
     
  2. X-FI

    X-FI Активный участник

    3.948
    3
    электрик, я так понимаю речь идёт о CLR?

    Попробуйте всю мощь класса Convert для начала, может подберёте то, что нужно.

    Это моё 1500-е сообщение на Форуме.
     
  3. DirectX

    DirectX Активный участник

    1.880
    4
    на C# я бы так сделал



    Думаю что и на CLR так же будет.

    Если вдруг не складывается, то можно сначала перевести в массив char http://support.microsoft.com/kb/311259, после чего воспользоваться функцией из сишной библиотеки

     
  4. X-FI

    X-FI Активный участник

    3.948
    3
    Мешать managed и unmanaged код не есть хорошо. К этому стоит прибегать только в самых экстренных случаях. А массив байт можно привести намного проще. У него же есть строка. Используя класс Encoding (зная кодировку) - можно получить массив байт. Правда, это будут немного другие байты, нежели те, которые ему нужны. Поэтому пусть с классом Convert разбирается. :)
     
  5. электрик

    электрик Активный участник

    3.746
    180
    DirectX, X-FI, dst = Convert::ToInt32(src, 16); самое то. Заработала зараза :) Спасибо огромное!
     
  6. электрик

    электрик Активный участник

    3.746
    180
    Не создаю новую тему, т.к. это продолжение истории.

    Не могли бы вы дать ссылку или прислать пример работы с СОМ-портом под VS 2005 C++? Гугль конечно велик, но описание внятное только по 6-ке. Так чтобы готовый рабочий пример - нету. Так, обрывки.
    Задача только принимать пакеты длиной 36 байт с одинаковым заголовком. Ну мне достаточно просто прием байта с инициализацией. Прием байта желательно чтобы вызывал некий event, чтобы его можно было обработать. Ну либо приняли 36 байт, а потом event. Но согласен на любое решение.
    Заранее спасибо большое.
     
  7. X-FI

    X-FI Активный участник

    3.948
    3
    электрик, смотрите, в CLR Вы можете использовать 2 способа работы с COM-портом.

    Если у Вас есть какие-нибудь психо-сексуальные отклонения, Вы можете воспользоваться функциями WinAPI (CreateFile, ReadFile и т.п.) для работы с COM-портом. Скорее всего, именно такие примеры Вы и находили в Интернете.

    Но можете и использовать прелести .NET. Для этого переместите на свою формочку компонент SerialPort. В его свойствах - можете задать всё, что захотите (длину пакета, число стоп-битов, проверку на чётность, скорость и всё, что только возможно задать). Нажимаете на "молнию" и видите 3 события для работы с RS-232. Например, в DataReceived как раз и можете написать обработку приёма нужного Вам пакета.

    А вообще, по теме, C++, на мой взгляд, для платформы .NET - один из самых неудобных языков. Может быть Вам стоит посмотреть в сторону C#? Сам переходил как раз с Visual C++ [WinForms] на классический .NET под началом C#. Ощущение, как будто пересаживаешься с копейки с пробитым радиатором на Мерседеc S-класса.
     
  8. электрик

    электрик Активный участник

    3.746
    180
    У меня задача то разовая. Все, что мне нужно - отреверсинженерить протокол между двух железок и потом успокоиться. Может я зря это затеял и есть готовый софт? У меня железка передает пакет фиксированной длины фиксированного формата нестандартной скоростью (usb-com такую скорость умеет). Софтина же моя раскладывает все это по полочкам, подписывает, некоторые байты раскладывает по битам и подписывает каждый бит. Чтобы наглядно было что в данный момент передается. По мере расшифровки подписывается остальное. Всё :)

    Компонент SerialPort уже нашел, спасибо. Сейчас буду надеяться, что в msdn про него есть хоть слово.
     
  9. X-FI

    X-FI Активный участник

    3.948
    3
    Да есть, конечно же. Но там и так все методы интуитивно понятны. Если бы не одно "но", что в среде под Visual C++ .NET постоянно "слетает" суфлёр кода и приходится многие названия и перечисления помнить наизусть.
     
  10. Pasha

    Pasha Активный участник

    4.442
    1
    С теплотой вспоминаю свое студенчество... Бессонные ночи с паяльником и чашкой кофе, страницы кода, раскиданные по столу платы, спешно разводящий плату под 20+ корпусов ИС товарищ... писят прошивок кристаллов за ночь и тыщща версий софта на PC... Халявные семплы от АД... Запах знаний и желание победить )
     
  11. электрик

    электрик Активный участник

    3.746
    180
    Pasha, у меня уже давно не студенчество :) Тут реверсинжиниринг с применением давно забытого и сильно эволюционировавшего инструмента в качестве подручного средства, т.к. найденые мною готовые логгеры и снифферы не позволяют выводить расшифровки на лету. Да, есть у некоторых макросы, но афигенно не функциональные. Приходится писать свой инструмент, который после выполнения своего задания уйдет в /dev/null :)

    MSDN как всегда немногословен. Ни одного примера. Ни как инитить, ни в каком месте инитить. Тупо описание и все. Ну чесслово. Хотя бы пример прилепили :(
     
  12. электрик

    электрик Активный участник

    3.746
    180
    Короче сделал все на PIC18 с выводом в терминал в уже "красивом виде" (ручки то помнят BBSные ESC-последовательности :) ). В тудыть все эти микрософты... Пол часа, C18 и все готово.
     
  13. Zuka58

    Zuka58 Активный участник

    4.336
    801
    это какой-то неправильный у тебя мсдн. у мс`ов всё очень подробно и с пачкой примеров. вот, смотри
    класс, кстати, вполне работоспособный
     
  14. электрик

    электрик Активный участник

    3.746
    180
    msdn тот же самый, только поискать на русском не догадался. А на английском примера не видел, хотя смотрел этот раздел. Спасибо.

    Хотя цель уже достигнута другим инструментом и топик уже не актуален.