Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Программная инженерия > Микроконтроллеры, робототехника, схемотехника, 3D принтеры
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.09.2014, 20:59   #41
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от avovana Посмотреть сообщение
Есть надежда на успех?)
Мне самому не по себе, что так затягиваю. Хочется уже отдать вам exe на тестирование в реальных условиях и дальше доработать. Надеюсь, не сорвётся это мероприятие

Последний раз редактировалось 8Observer8; 13.09.2014 в 21:01.
8Observer8 вне форума Ответить с цитированием
Старый 14.09.2014, 13:55   #42
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Какой неожиданный подвох! В логах написано, что размер пакета 22 байта, а считаю - их 21! Fatality!

Цитата:
26 9:55:57 ttermpro.exe IRP_MJ_READ Serial6 SUCCESS Length 22: 53 54 2C 47 53 2C 30 BE 2C 20 20 20 20 20 20 20 30 20 6B 67 0D
8Observer8 вне форума Ответить с цитированием
Старый 14.09.2014, 13:57   #43
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от 8Observer8 Посмотреть сообщение
Какой неожиданный подвох! В логах написано, что размер пакета 22 байта, а считаю - их 21! Fatality!
Блин, последний байт это же перевод строки! Вот я дурак!

P.S. Не чёт не тек. Ладно делаю 22 байта. 0D0A - в конце. А там на железе потестим.

Последний раз редактировалось 8Observer8; 14.09.2014 в 14:00.
8Observer8 вне форума Ответить с цитированием
Старый 15.09.2014, 07:05   #44
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

В чем сложность?
Код:
procedure TForm1.Button1Click(Sender: TObject);
const TestData='53542C47532C30BE2C2020202020202030206B670D0A';
var data:string;
begin
  SetLength(data,Length(TestData));
  SetLength(data,HextoBin(PChar(LowerCase(TestData)),PChar(data),Length(data)));
  caption:=data;
  if Length(data)<22 then Exit;
  mmo1.Lines.Add('Status: '+copy(data,1,2));
  mmo1.Lines.Add('Type: '+copy(data,4,2));
  mmo1.Lines.Add('DevNo: '+copy(data,7,2));
  mmo1.Lines.Add('Data: '+Trim(copy(data,10,8)));
  mmo1.Lines.Add('DataDim: '+copy(data,19,2));
end;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 15.09.2014, 10:01   #45
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Сложность в том, что посылку ещё надо "накопить". Она же приходит байт за байтом. У меня всё готово кроме парсинга.
8Observer8 вне форума Ответить с цитированием
Старый 15.09.2014, 10:24   #46
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Главная проблема:

В логах, которые скинул avovana, в пакете 21 байт:
Цитата:
53 54 2C 47 53 2C 30 BE 2C 20 20 20 20 20 20 20 30 20 6B 67 0D
По документации - пакет состоит из 22 байт. В конце каждого пакета 0D0A.

Может я с ASCII плохо знаком, но мне кажется, что в логах должно было напечататься 0A. Либо это особенности программы, которая сохраняет в лог.
8Observer8 вне форума Ответить с цитированием
Старый 15.09.2014, 11:14   #47
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

в чем проблема накопить?
Код:
procedure TForm1.btn1Click(Sender: TObject);
const TestData='53542C47532C30BE2C2020202020202030206B670D0A';
var data:string;
begin
  SetLength(data,Length(TestData));
  SetLength(data,HextoBin(PChar(LowerCase(TestData)),PChar(data),Length(data)));

  Inc(position);
  if position>22 then position:=1;
  btn1.Caption:=IntToStr(position);
  CollectData(data[position],1);
end;

procedure TForm1.CollectData(const Data; Len: Integer);
var s:string;
begin
  SetString(s,PChar(@Data),Len);
  DataBuf:=DataBuf+s;
  if length(DataBuf)>=22 then
  begin
    s:=Copy(DataBuf,1,22);
    Delete(DataBuf,1,22);
    ProcessData(s);
  end;
end;

procedure TForm1.ProcessData(Data: string);
begin
  mmo1.Lines.Add('Status: '+copy(data,1,2));
  mmo1.Lines.Add('Type: '+copy(data,4,2));
  mmo1.Lines.Add('DevNo: '+copy(data,7,2));
  mmo1.Lines.Add('Data: '+Trim(copy(data,10,8)));
  mmo1.Lines.Add('DataDim: '+copy(data,19,2));
end;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 16.09.2014, 16:27   #48
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию



Исходники: https://github.com/8Observer8/WeighingMachine

Приложение: https://yadi.sk/d/3h-X-J_2bVyrd
Содержимое следующего архива должно лежать в папке с приложением: https://yadi.sk/d/GV2PozMcbSuUG

Приложение сохраняет значения больше 100 кг в таблицу базы данных (каждые 4 секунды).

Чтобы очистить таблицу нужно нажать "Инструменты" -> "Очистить". Правда, если таблица большая, то очищение будет не таким быстрым, как хотелось бы. Я над этим работаю.

Только приступаю к созданию промышленных приложений по сбору, парсингу, хранению и визуализации данных (с помощью графиков). Ваше задание очень кстати. Нужно будет ещё время, чтобы довести до ума. У меня удовлетворительные знания по GUI, базам данных, графикам, по обмену данными: по COM-порту, локальной и глобальной сети. Но не очень хорошие знания по алгоритмам. Я над этим тоже работаю. Просто нужно больше выполнять практических заданий.

Пишите, пожалуйста, какие нужны дополнения, исправления и т.д.

Последний раз редактировалось 8Observer8; 16.09.2014 в 16:30.
8Observer8 вне форума Ответить с цитированием
Старый 16.09.2014, 21:41   #49
avovana
Пользователь
 
Регистрация: 08.09.2014
Сообщений: 14
По умолчанию

8Observer8!
Спасибо за работу! В Саратове живете? Я сам из Саратова. Можно выехать на объект, непосредственно посмотреть на работу!

Есть пару вопросов.
1. Не запускается приложение, говорит, что отсутствуетQt5Core.dll
2. Возможен ли вариант для linux?
avovana вне форума Ответить с цитированием
Старый 16.09.2014, 21:59   #50
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,323
По умолчанию

Цитата:
Сообщение от avovana Посмотреть сообщение
8Observer8!
Спасибо за работу! В Саратове живете? Я сам из Саратова. Можно выехать на объект, непосредственно посмотреть на работу!
Отлично! Давайте обменяется телефонами в личке? Я вам завтра позвоню

Цитата:
Сообщение от avovana Посмотреть сообщение
Есть пару вопросов.
1. Не запускается приложение, говорит, что отсутствуетQt5Core.dll
Все dll здесь: https://yadi.sk/d/GV2PozMcbSuUG

Цитата:
Сообщение от avovana Посмотреть сообщение
2. Возможен ли вариант для linux?
Думаю, да. Можно попробовать. У меня интернет слабый. Вы могли бы скачать для меня Qt для Linux? Я бы на флешке забрал. Вот отсюда (когда перейдёте, то нажмите на "Show downloads") http://qt-project.org/downloads

Мне надо вот это (на всякий случай две версии для Linux):
- Qt 5.3.2 for Linux 32-bit (449 MB)
- Qt 5.3.2 for Linux 64-bit (447 MB)
- Qt 5.3.2 for Windows 32-bit (MinGW 4.8.2, OpenGL, 737 MB) (у меня 5.3.1, хочу обновить до 5.3.2)

Последний раз редактировалось 8Observer8; 16.09.2014 в 22:06.
8Observer8 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Приём данных с COM порта Евгений55 Microsoft Office Excel 3 05.01.2013 16:46
Считывание сигнала с COM порта Pasha_Sh Общие вопросы Delphi 8 13.12.2011 23:29
автоматическое считывание с com порта denis_kas Win Api 4 22.11.2010 19:11
Считывание и расшифровка (интерпретация) данных с lpt порта, передаваемых печатающему устройству Ma3a Общие вопросы Delphi 3 21.12.2009 08:46
считывание из СОМ(или USB) порта voron29 Общие вопросы Delphi 1 29.06.2008 13:09