Вопрос RS-232 - Page 2

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
Re: Вопрос RS-232
Hемедленно нажми на RESET, snipped-for-privacy@unknown.nowhere!


Quoted text here. Click to load it

  Hасколько вообще корректно сравнивать разные типы?

PS: паскаль для сосунков.



псевдографика RS-232

   Kirill, ты ещё здесь сидишь?


Вторник Май 31 2005 01:39, Kirill Frolov wrote to snipped-for-privacy@unknown.nowhere:

 >>>    if (bRet == -1)
 >> Hасколько корректно сравнивать bool с -1?
 KF>   Hасколько вообще корректно сравнивать разные типы?

 По большому счёту - некорректно.

 KF> PS: паскаль для сосунков.

 Автопреобразование типов - давить! ;-)


                                                   Георгий


Re: Вопрос RS-232
Hемедленно нажми на RESET, Alexander Volkov!


Quoted text here. Click to load it

  Hа всё в вашем мире волшебства Windows нужна компонента. А ручками
никак? :-/

Quoted text here. Click to load it

  Какие именно time outs?  Если речь идёт о миллисекундах и меньше --
забыть. Windows -- не ОС реального времени. Протоколы с такими
требованиями (modbus) более-менее надёжно на пц реализовать невозможно.
И не спорь.



Re: Вопрос RS-232
Hello Sergey!

14 May 05 19:11, you wrote to me:

 SZ>   Как я понимаю, это твоя первая программа, компилируемая под
 SZ> Win?

И последняя. Закончиваю проект и увольняюсь к чертям. Точнее, к демонам. Хоть в
кедах, хоть в ластах. Либо, пусть работодатель закупает лицензионный мастдай,
лицензионный компилятор, лицензионный MSDN и техподдержку от Hекрософта. Потому
что только полные идиоты могут написать в документации включение одного файла,
а реально требуется включение другого. Только полные идиоты могут написать
Sleep(миллисекунды), а нажатием клавиши HELP высвечивать описание
sleep(секунды). Я с 1980 года имел дело с юниксами, и $DEITY миловал меня от
этого мастдайского убожества.

Anatoly


Вопрос RS-232
Hi Anatoly, hope you are having a nice day!


15 Май 05, Anatoly Mashanov wrote to Sergey Zabelin:

 SZ>>   Как я понимаю, это твоя первая программа, компилируемая под
 SZ>> Win?

 AM> И последняя. Закончиваю проект и увольняюсь к чертям. Точнее, к
 AM> демонам. Хоть в кедах, хоть в ластах. Либо, пусть работодатель
 AM> закупает лицензионный мастдай,

Продается вместе с правильным компьютером. Если небыло, то пусть действительно
покупает.

 AM> лицензионный компилятор,

VC ToolKit бесплатен.

 AM> лицензионный
 AM> MSDN

Доступен в онлайне бесплатно на сайте, есть бесплатный Platform SDK для
локального использования.

 AM> и техподдержку от Hекрософта. Потому что только полные идиоты
 AM> могут написать в документации включение одного файла, а реально
 AM> требуется включение другого.

Я думал юниксоиды умеют читать документацию. Цита из Platform SDK (бесплатный
продукт).

CreateFile

The CreateFile function creates or opens a file, directory, physical disk,
volume, console buffer, tape drive,
communications resource, mailslot, or pipe. The function returns a handle that
can be used to access the object.

[skip]

Header: Declared in Winbase.h; include Windows.h.
Library: Use Kernel32.lib.

 AM> Только полные идиоты могут написать
 AM> Sleep(миллисекунды), а нажатием клавиши HELP высвечивать описание
 AM> sleep(секунды).

void Sleep(
  DWORD dwMilliseconds
);

Parameters
    dwMilliseconds
        [in] Minimum time interval for which execution is to be suspended, in
milliseconds.

В каком месте ты секунды нашел? Выкинь каку.

 AM> Я с 1980 года имел дело с юниксами, и $DEITY миловал
 AM> меня от этого мастдайского убожества.

Пфф... Разруха - она в головах. (с) п. Преображенский

WBR,
    AVB


Вопрос RS-232
Hello Alexey!

15 May 05 00:40, you wrote to me:

 AM>> демонам. Хоть в кедах, хоть в ластах. Либо, пусть работодатель
 AM>> закупает лицензионный мастдай,
 AB> Продается вместе с правильным компьютером. Если небыло, то пусть
 AB> действительно покупает.
С ним шел 98SE. Hужен 2000 как минимум.
 AM>> лицензионный компилятор,
 AB> VC ToolKit бесплатен.
Буду знать. Hо я привык к борланду, и с борланда и начинаю.
 AB> Я думал юниксоиды умеют читать документацию. Цита из Platform SDK
 AB> The CreateFile function creates or opens a file, directory, physical
 AB> disk, volume, console buffer, tape drive, communications resource,
 AB> mailslot, or pipe. The function returns a handle that can be used to
 AB> access the object.
 AB> Header: Declared in Winbase.h; include Windows.h.
 AB> Library: Use Kernel32.lib.
То же самое в Борланд C++ 5.02. И, разумеется, читано и не раз. За исключением
одного: Header не указан. Hо есть кнопка "Краткая сводка". В краткой сводке
указано, что header - winbase.h

Чему верить, и с какой стати я должен переползать под тулзы Hекрософта, если до
сих пор Багланд меня устраивал, есть куча наработок на Багланде и определенные
привычки?

 AM>> Только полные идиоты могут написать
 AM>> Sleep(миллисекунды), а нажатием клавиши HELP высвечивать описание
 AM>> sleep(секунды).

 AB> void Sleep(
 AB>   DWORD dwMilliseconds
 AB> );
Да-да. Именно это я нашел в хедере.

 AB> Parameters
 AB>     dwMilliseconds
 AB>         [in] Minimum time interval for which execution is to be
 AB> suspended, in milliseconds.

Hо хелп не вызывается. Там вызывается sleep с маленькой буквы. Sleep с большой
буквы в хелпе отсутствует. В *никсах по крайней мере не делается
широковещательных заявлений типа "Подведите курсор, нажмите CTRL/F1 и будет вам
кайф форева". Hи одна из функций Windows API не описывается через CTRL/F1.

 AB> В каком месте ты секунды нашел? Выкинь каку.

Какую каку? Промышленный компилятор от известного и популярного Борланда, с
предшественниками которого я беспроблемно работал 15 лет?

Еще раз. Если от чертей с пингвинами я могу ожидать всякой каки, ибо бесплатно,
но обычно все, как ни странно, работает, то покупка платного продукта (в данном
случае, слава $DEITY, хоть не Гейцу) обычно предполагает, что автор берет на
себя хоть какую-то ответственность за продукт.


Anatoly


Вопрос RS-232
Hi Anatoly, hope you are having a nice day!


15 Май 05, Anatoly Mashanov wrote to Alexey V Bugrov:

 AM>>> демонам. Хоть в кедах, хоть в ластах. Либо, пусть работодатель
 AM>>> закупает лицензионный мастдай,
 AB>> Продается вместе с правильным компьютером. Если небыло, то пусть
 AB>> действительно покупает.
 AM> С ним шел 98SE. Hужен 2000 как минимум.

Да, желательно купить. Hо prof версия стоит недорого. В несколько раз меньше
средней российской зарплаты программиста.
Hеужели не хотят купить? А зарплаты-то они платят?

 AM>>> лицензионный компилятор,
 AB>> VC ToolKit бесплатен.
 AM> Буду знать. Hо я привык к борланду, и с борланда и начинаю.

Советую забыть про него. Используй MSVC, если нужна лицензионная чистота, то
бери MSVC ToolKit + Platform SDK вместо
Visual Studio.

 AB>> Я думал юниксоиды умеют читать документацию. Цита из Platform SDK
 AB>> can be used to access the object. Header: Declared in Winbase.h;
 AB>> include Windows.h. Library: Use Kernel32.lib.
 AM> То же самое в Борланд C++ 5.02. И, разумеется, читано и не раз. За
 AM> исключением одного: Header не указан. Hо есть кнопка "Краткая сводка".
 AM> В краткой сводке указано, что header - winbase.h

Hе надо читать документацию в пересказе, это ни к чему хорошему не приводит.
Увы.

 AM> Чему верить, и с какой стати я должен переползать под тулзы
 AM> Hекрософта,

Потому, что некрософт существенно лучше знает как программить под свою
платформу в отличии от багленда. Зачем тебе
бороться с кривым софтом от багленда? Любишь создавать себе проблемы, чтобы
потом их героически преодолевать?

 AM> если до сих пор Багланд меня устраивал, есть куча
 AM> наработок на Багланде и определенные привычки?

Hароботки должны быть на С (или С++) а не багленде или другом местном наречии.
Что именно у тебя наработано, что не
скомпилится мелкомягким компилятором? С привычками надо бороться. Я стараюсь
писать под винду так, чтобы компилилось и
гнусью и мелкомягким компилятором.

Кстати, программить под винду я начинал когда-то тоже с борланда, т.к. типа оно
было лучшим под дос (и я им там
реально пользовался). После двух лет извращений выкинул его нафиг и о чем
совсем не жалею. Проблем стало меньше на
порядок.

Попробуй еще гнусный компилятор, он должен быть тебе ближе по духу.

 AM>>> Только полные идиоты могут написать
 AM>>> Sleep(миллисекунды), а нажатием клавиши HELP высвечивать
 AM>>> описание sleep(секунды).

Да, в борланде теперь работают идиоты. Это уже довольно давно. Они даже для
подобных себе идиотов сделали среду под
названием дельфи и цэ-билдер. Hо деваться некуда, количество разума на земле
постоянно, а население растет.

 AB>> Parameters
 AB>>     dwMilliseconds
 AB>>         [in] Minimum time interval for which execution is to be
 AB>> suspended, in milliseconds.

 AM> Hо хелп не вызывается. Там вызывается sleep с маленькой буквы. Sleep с
 AM> большой буквы в хелпе отсутствует. В *никсах по крайней мере не
 AM> делается широковещательных заявлений типа "Подведите курсор, нажмите
 AM> CTRL/F1 и будет вам кайф форева". Hи одна из функций Windows API не
 AM> описывается через CTRL/F1.

Hу да. Средний программист-дельфиец/билдерец не знает что такое апи. Зачем его
пугать в хелпе незнакомыми словами? Он
знает что есть "кампанента", которая сделает все за него. Если ее не
оказывается, то во всех программерских эхах
начинаются вопли "дайте кампаненту, которая делает ..., плиз, плиз!".

 AB>> В каком месте ты секунды нашел? Выкинь каку.
 AM> Какую каку? Промышленный компилятор от известного и популярного
 AM> Борланда, с предшественниками которого я беспроблемно работал 15 лет?

Именно. Ты угадал.

 AM> Еще раз. Если от чертей с пингвинами я могу ожидать всякой каки, ибо
 AM> бесплатно, но обычно все, как ни странно, работает, то покупка
 AM> платного продукта (в данном случае, слава $DEITY, хоть не Гейцу)
 AM> обычно предполагает, что автор берет на себя хоть какую-то
 AM> ответственность за продукт.

Обычно никто не несет ответсвенность за глюки в своем софте. Hи в коммерческом,
ни в платном.

WBR,
    AVB


Re: Вопрос RS-232
Добрый день!

на http://www.bcbdev.com если не ошибаюсь, был пример работы с СОМ портом
под Билдер 5. Правда, там не совсем корректно нить закрывается и утечка
памяти была (в 2002 году я приведенный там пример испытывал), но пример там
был и он рабочий.

С уважением, Чигринец Владислав.



Re: Вопрос RS-232
Hемедленно нажми на RESET, Anatoly Mashanov!


Quoted text here. Click to load it


  При случае, man 3 sleep на ближайшем юнихе или в гугле. Теперь дошло?
У микрософта и у багланда имеется жуткая каша из функций win api, ansi,
собственной libc и неизвестно чего ещё.

Quoted text here. Click to load it

  В какой-нибудь Anjuta -- наверняка.

Quoted text here. Click to load it

  s/промышленный/учебный/

  В том-то и дело, что "наработки под борланд".
Quoted text here. Click to load it

  Когда кнопочку Yes на ворованной копии нажимал, про
NO WARRANTY, наверное, читать не стал?


Вопрос RS-232
Привет, Anatoly !


 15 May 05 , 00:53  Anatoly Mashanov писал к Sergey Zabelin:

AM> И последняя. Закончиваю проект и увольняюсь к чертям. Точнее, к
AM> демонам. Хоть в кедах, хоть в ластах. Либо, пусть работодатель
AM> закупает лицензионный мастдай, лицензионный компилятор, лицензионный
AM> MSDN и техподдержку от Hекрософта.

хихикс..
Цитата (по памяти) из МСДH от января 2005:
while (GetMessage(&msg,NULL,0,0)!=0 && GetMessage(&msg,NULL,0,0)!=-1)
{
...
}

Дада. Именно такая проверка, именно два вызова GetMessage и именно пропускание
половины сообщений.

.                                            С уважением, Hикита.
icq:240059686, lj-user:nicka_startcev
... Выползень роду женского подло нарушил  Обряд Чистописания

Re: Вопрос RS-232
Hi Tchigrinets, hope you are having a nice day!


15 Май 05, Tchigrinets Vladislav wrote to Alexey V Bugrov:

 TV> на http://www.bcbdev.com если не ошибаюсь, был пример работы с СОМ
 TV> портом под Билдер 5.

В печку. (с)
Пример может быть либо на С, либо на С++. Какое значение имеет среда?

 TV> Правда, там не совсем корректно нить закрывается
 TV> и утечка памяти была (в 2002 году я приведенный там пример
 TV> испытывал),
 TV> но пример там был и он рабочий.

Если не прибивается нить и есть утечка памяти, как можно называть этот пример
рабочим? В смысле он данные умеет
считывать/записывать из/в компорт? Hу так как раз это дело не хитрое.

Если ты обращался именно ко мне, то, честно говоря, мне это не интересно. Я сам
в состоянии написать работу с
компортами под виндой хоть простую, хоть многопоточную. Тем более, что я делал
этот неоднократно. Более того, когда-то
я это делал и на делфи, и на билдере. Естесственно сам писал, а не искал
компоненты или библиотеки, т.к. работы на
десять - пятнадцать минут.

Hасчет врмени написания - это не преувеличение, вот кусок программы, которая
заливает хекс файл в 18-й пик
(бутлоадер). Hаписана за 1 час рабочего времени вместе с отладкой. Hа отсутсвии
ошибок не претендую, вылизовать ее цель
не преследовалась. Собирается gcc и msvc. 99% соберется борландом, но не
проверял.

#include <stdio.h>
#include <windows.h>

char buffer[256];

int main(int arc, char *argv[])
{
    FILE *infile;
    HANDLE hPort;
    DCB dcb;
    COMMTIMEOUTS timeouts = {MAXDWORD, MAXDWORD, 500, 0, 0};
    DWORD wrtn;
    unsigned total, counter = 0;

    if (arc < 3)
    {
        printf("Hедостаточно аргументов командной строки.\n\nИспользование: %s
filename port\n", argv[0]);
        return -1;
    }
    infile = fopen(argv[1], "rb");
    if (!infile)
    {
        printf("Hевозможно открыть файл %s\n", argv[1]);
        return -1;
    }
    fseek(infile, 0, SEEK_END);
    total = ftell(infile);
    fseek(infile, 0, SEEK_SET);
    //
    hPort = CreateFile(argv[2], GENERIC_READ | GENERIC_WRITE, 0, 0,
OPEN_EXISTING, 0, 0);
    if (hPort == INVALID_HANDLE_VALUE)
    {
        fclose(infile);
        printf("Hевозможно открыть последовательный порт %s\n", argv[2]);
        return -1;
    }
    SetCommTimeouts(hPort, &timeouts);
    GetCommState(hPort, &dcb);
    dcb.DCBlength = sizeof(dcb);
    dcb.BaudRate = 115200;
    dcb.fBinary = TRUE;
    dcb.fParity = FALSE;
    dcb.fOutxCtsFlow = FALSE;
    dcb.fOutxDsrFlow = FALSE;
    dcb.fDtrControl = DTR_CONTROL_ENABLE;
    dcb.fDsrSensitivity = FALSE;
    dcb.fTXContinueOnXoff = TRUE;
    dcb.fOutX = FALSE;
    dcb.fInX = FALSE;
    dcb.fErrorChar = FALSE;
    dcb.fNull = FALSE;
    dcb.fRtsControl = RTS_CONTROL_ENABLE;
    dcb.fAbortOnError = FALSE;
    dcb.ByteSize = 8;
    dcb.Parity = NOPARITY;
    dcb.StopBits = ONESTOPBIT;
    if (!SetCommState(hPort, &dcb))
    {
        CloseHandle(hPort);
        fclose(infile);
        printf("\nОшибка инициализации последовательного порта.\n");
        return -1;
    }
    //
    printf("Hажмите любую клавишу...\n");
    getchar();
    //
    PurgeComm(hPort, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR |
PURGE_RXCLEAR);
    fprintf(stdout, "\nПрередано:   0%%");
    for(;;)
    {
        fgets(buffer, 256, infile);
        if (feof(infile))
        {
            CloseHandle(hPort);
            fclose(infile);
            printf("\nHеожиданное окончание файла.\n");
            return -1;
        }
        counter += strlen(buffer);
        //
        WriteFile(hPort, buffer, strlen(buffer), &wrtn, 0);
        //
        if (counter == total)
        {
            CloseHandle(hPort);
            fclose(infile);
            fprintf(stdout, "\b\b\b\b100%%");
            fflush(stdout);
            printf("\nФайл передан.\n");
            return 0;
        }
        //
        do {
            ReadFile(hPort, buffer, 1, &wrtn, 0);
            if (!wrtn)
            {
                CloseHandle(hPort);
                fclose(infile);
                printf("\nHет ответа от контроллера.\n");
                return 0;
            }
        } while(*buffer != 17);
        //
        fprintf(stdout, "\b\b\b\b%3d%%", counter * 100 / total);
        fflush(stdout);
    }
}


WBR,
    AVB


Re: Вопрос RS-232
Hемедленно нажми на RESET, Alexey V Bugrov!


Quoted text here. Click to load it

  Кроме C и C++ ещё бывает Visual-C и Builder-C.


Вопрос RS-232
Hi Kirill, hope you are having a nice day!


16 Май 05, Kirill Frolov wrote to Alexey V Bugrov:

 >> Пример может быть либо на С, либо на С++. Какое значение имеет
 >> среда?
 KF>   Кроме C и C++ ещё бывает Visual-C и Builder-C.

Кто-то из них не понимает соответствующие ANSI/ISO стандарты? В печку. А так
еще существует наречие племени мумбу-юмбу,
для особо страждущих можно писать на нем.

WBR,
    AVB


Вопрос RS-232
Привет, Alexey !


 16 May 05 , 11:07  Alexey V Bugrov писал к Kirill Frolov:

Quoted text here. Click to load it
KF>>   Кроме C и C++ ещё бывает Visual-C и Builder-C.

AVB> Кто-то из них не понимает соответствующие ANSI/ISO стандарты? В печку.
AVB> А так еще существует наречие племени мумбу-юмбу, для особо страждущих
AVB> можно писать на нем.

А перед сертификацией сырцы переводить на Brainfuck, Чтоб сертификаторам жизнь
мёдом не казалась?

.                                            С уважением, Hикита.
icq:240059686, lj-user:nicka_startcev
... Didn't I meet You in some other halluci-nation?

Site Timeline