Page 14 of 15

Re: Пишем лог на SD карточку

Posted: Wed Aug 27, 2014 11:22 am
by serge__5518
Dmitrich2 wrote: Да добавляются и в TxD и в RxD, видно что обмен идет, а информации нет.
Должно все работать.
Оправлю экзешник, может что с ним.
Вообще там простая проверка. Можно посмотреть в терминале , что приходит.

Re: Пишем лог на SD карточку

Posted: Wed Aug 27, 2014 12:26 pm
by Dmitrich2
Логера сейчас под рукой нет, пробовал с терминала подаю ответный сигнал
!#0056LoggerSD V1.0 for SECU006700451B6D9D00000000\r
но ни чего не выводится.

Re: Пишем лог на SD карточку

Posted: Wed Aug 27, 2014 12:35 pm
by serge__5518
Ок!
Вечером посмотрю. Сейчас на работе....

Re: Пишем лог на SD карточку

Posted: Wed Aug 27, 2014 6:19 pm
by serge__5518
Dmitrich2 wrote:Логера сейчас под рукой нет, пробовал с терминала подаю ответный сигнал
!#0056LoggerSD V1.0 for SECU006700451B6D9D00000000\r
но ни чего не выводится.
Ничего особого в голову не приходит. Поэтому повторюсь.
Проверка там простая:
1) if(FCurrentCommand.packed.hostRequest==LOGGER_ANSWER) проходит == !
2) if(tChar == LAST_SYMBOL_BLOCK && tCount == tCountRxD) тут надо определится что такое "\r" должен быть байт 0xD
3) switch(FCurrentCommand.packed.commandID) проходит == #

Если эта строка с терминала, то надо смотреть п.2

Re: Пишем лог на SD карточку

Posted: Thu Aug 28, 2014 7:16 am
by Dmitrich2
Добрый день serge__5518!

Заметил следующее при передачи одного пакета RxD фиксирует почемуто три пакета.

Re: Пишем лог на SD карточку

Posted: Thu Aug 28, 2014 11:12 am
by serge__5518
Dmitrich2 wrote: Заметил следующее при передачи одного пакета RxD фиксирует почемуто три пакета.
Это могут быть особенности реализации класса компорта и windows.
Консоль подсчитывает количество пакетов по прерыванию компорта. Конечно это "немного не правильно"-)
Стоило сделать по другому. Но, на момент написания казалось этого достаточно (индикация процесса обмена)-)
Так, как Вы в терминале вводите '\r'?

Re: Пишем лог на SD карточку

Posted: Thu Aug 28, 2014 11:45 am
by Dmitrich2
serge__5518 wrote: Так, как Вы в терминале вводите '\r'?
Вводил по разному '\r', $0D, $0D$0A. результат одинаков.
А как собрать исходник на консоль?

Re: Пишем лог на SD карточку

Posted: Thu Aug 28, 2014 2:02 pm
by serge__5518
Dmitrich2 wrote:Вводил по разному '\r', $0D, $0D$0A. результат одинаков.
Просто если 52 символом не будет байт 0xD посылка не пройдет в консоль
Dmitrich2 wrote: А как собрать исходник на консоль?
Это проект для CodeGear (CodeGear™ RAD Studio 2009 Version 12.0.3170.16989 Copyright © 2008 ).
В принципе, проект можно собрать проект из этих файлов для Builder 5 (6) ( добавив файлы и установив компонент commport)
В CodeGear тоже надо добавить компонент commport.

Re: Пишем лог на SD карточку

Posted: Tue Sep 02, 2014 8:24 am
by Dmitrich2
Добрый день serge__5518!

Установил CodeGear, добавив файлы и установил компонент commport, но при комлиляции выдает три ошибки:
[BCC32 Error] LConsol.cpp(1402): E2034 Cannot convert 'wchar_t *' to 'const char *'
[BCC32 Error] LConsol.cpp(1402): E2342 Type mismatch in parameter '__src' (wanted 'const char *', got 'wchar_t *')
[BCC32 Error] LConsol.cpp(1680): E2085 Invalid pointer addition
что может быть?

Re: Пишем лог на SD карточку

Posted: Wed Sep 03, 2014 6:40 am
by serge__5518
Dmitrich2 wrote:Установил CodeGear, добавив файлы и установил компонент commport, но при комлиляции выдает три ошибки:
[BCC32 Error] LConsol.cpp(1402): E2034 Cannot convert 'wchar_t *' to 'const char *'
[BCC32 Error] LConsol.cpp(1402): E2342 Type mismatch in parameter '__src' (wanted 'const char *', got 'wchar_t *')
Добрый день Dmitrich2!
Это компилятор ругается на некорректное преобразование типа переменной.
По номеру строки (1402) это следующее выражение в исходнике:
// StringID
strncpy(
&FCurrentCommand.packed.data[tCount],
LoggerIdEdit->Text.c_str(),SIZE_LOGGER_ID);
функция strncpy определена так :
char * strncpy ( char * destination, const char * source, size_t num )
Значит ругается на const char * source == LoggerIdEdit->Text.c_str()
Выходит , у Вас LoggerIdEdit->Text.c_str() возвращает тип wchar_t * вместо const char *
У меня (CodeGear™ RAD Studio 2009) не ругается на эту строку.
Вот пример преобразования:
wchar_t tTemp[] = L"TEST";
AnsiString tStr(tTemp);
const char* tChar = tStr.c_str();

Вам можно сделать так:
// StringID
AnsiString tTempStr( LoggerIdEdit->Text.c_str());
strncpy(&FCurrentCommand.packed.data[tCount], tTempStr.c_str(),SIZE_LOGGER_ID);


Dmitrich2 wrote: [BCC32 Error] LConsol.cpp(1680): E2085 Invalid pointer addition
что может быть?
Наверно речь идет об этой строке:
tStatusPort = " открыт "+
IntToStr(CommPort->Baud)+" бод/сек";

Здесь тоже проблема в преобразовании типов.
Попробуйте так
tStatusPort = AnsiString(" открыт ")+
IntToStr(CommPort->Baud)+AnsiString(" бод/сек");