Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
3 / 2 / 2
Регистрация: 22.12.2016
Сообщений: 219

ComPort library Потеря символов

14.01.2017, 06:25. Показов 2768. Ответов 31
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кто то может работал с этой библой, делаю отправку 10 символов по нажатию кнопки с поля Edit1, первые 10 символов улетают полностью при вводе следующих 10 символов теряются значения, то 7 улетит то 6. Кто то сталкивался с такой проблеммой?
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TTerminal::btnSendClick(TObject *Sender)
{
ComPort1->ClearBuffer(True,True);
if(Edit1->Text.Length()>9){
 
   ComPort1->WriteStr(Edit1->Text);
  Edit1->Text = "";
   Edit1->Clear();
   }
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
14.01.2017, 06:25
Ответы с готовыми решениями:

Не компилится с ComPort Library
Привет! Для того, чтобы программа запускалась на чужом компе, что делать прочитал в теме вверху, спасибо! Я использую ComPort Library...

Чтение данных из COMport
Хоть эта тема уже поднималось не раз, но проблему я так решить и не смог. Задача: Нужно что бы программа считывала информацию из com...

Старый добрый COMPORT
Как же надоели эти ком порты, уже неделю занимаюсь с ними а толку ноль. У меня C++ Bulder. Собственно никаких элементов управления для...

31
3 / 2 / 2
Регистрация: 22.12.2016
Сообщений: 219
22.01.2017, 09:23  [ТС]
не уж то не кто не сталкивался?
0
3 / 2 / 2
Регистрация: 22.12.2016
Сообщений: 219
24.01.2017, 06:45  [ТС]
потеря данных происходит в
C++
1
2
3
4
if (Edit1->Text.Length()>9){
ComPort1->WriteStr(Edit1->Text);
Edit1->Text = "";
}
Тоесть после обработки и запуска второй раз символы теряются.
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
24.01.2017, 07:51
мб надо определять после загрузки позиции или обнулять их.
0
3 / 2 / 2
Регистрация: 22.12.2016
Сообщений: 219
24.01.2017, 09:01  [ТС]
мб я не знаю, всё перепробывал и обнуление буфера ком порта, и как видите обнуление строки едит идёт, там работа такая, после ввода 10 символов идёт отправка на ком порт после чего приходит ответ о введеннии новых значений, послле ввода и отправки на замену из 10 символов пропадает штук 5-6, если их отправлять по одному то всё нормально, а мне нужно пачкой в 10 символов)))
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
24.01.2017, 09:04
Я про компонент,какие у него параметры?или скинте сам компонент)
0
3 / 2 / 2
Регистрация: 22.12.2016
Сообщений: 219
24.01.2017, 12:15  [ТС]
Вообщем поковырял я сторону приёмника и передатчика, само устройство борохлит. Как бы сделать отправку посимвольно с поля едит тока не стирать предыдущие чтобы видить что ты написал, а то забудешь невзначай.

Добавлено через 1 час 37 минут
Сделал так
C++
1
ComPort1->WriteStr(Edit1->Text.Length());
оправляется посимвольно но одни цифры начиная с 123.. и так далее, почему не печатает то, что набераю я?
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
24.01.2017, 12:24
Пришлите компонент =) или сделайте сркин подсказки его параметров и функций.
0
3 / 2 / 2
Регистрация: 22.12.2016
Сообщений: 219
24.01.2017, 13:38  [ТС]
Вы про библиотеку к билдеру? то вот.
Вложения
Тип файла: zip comport411f.zip (556.9 Кб, 10 просмотров)
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
24.01.2017, 13:57
Вобщем, в документации есть примеры, и там каждая отправка завершается разделительным символом. Полистайте, там все есть.
0
3 / 2 / 2
Регистрация: 22.12.2016
Сообщений: 219
24.01.2017, 14:17  [ТС]
Мне это не поможет мне нужно сделать , что то вроще счётчика отправки с Edit1->Text чтобы отправлялось каждая нажатая буква или цифра, но не затиралась в поле Edit1->Text чтобы видеть, что я ввожу можно до 10 символов можно до двадцати это не важно счётчик я думаю выглядит как то так
Code
1
for (int i = 0; i < Edit1->Text.Length(); i++)
но, что делать дальше не могу сообразить как поставить в if и, что чтобы отправлялось повторюсь по одному набранному символу в поле Edit1->Text!
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
24.01.2017, 14:21
sarsmen, Еще раз с другого боку описать задачу можете, то малость не уловил смысл =)
0
3 / 2 / 2
Регистрация: 22.12.2016
Сообщений: 219
24.01.2017, 14:43  [ТС]
Ну чтож тут не понятного, вот функция отправки набранного в поле Edit1->Text
Code
1
ComPort1->WriteStr(Edit1->Text);
Она зашита в Edit1Change тоесть выполняет каждоё твоё нажатие, как нажал она сработала, но мне не нужно чтобы она отправляла допустим нажал я 1 она отправила 1 надал 2 она отправила 1 и 2 потому что я не хочу стирать каждое нажатие и видеть его в поле Edit1->Text тоесть нажал я 1 и 2 и потом нажал 3 отправилось не 123 а следущи
0
управление сложностью
 Аватар для Почтальон
1693 / 1306 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
24.01.2017, 14:56
Так смените на другой обработчик, а не Change
0
3 / 2 / 2
Регистрация: 22.12.2016
Сообщений: 219
24.01.2017, 15:09  [ТС]
а не в нём дело, дело на стороне клиента он пачку символов не хочет обрабатывать, вот и нужно по одному отправлять но при этом не затирать каждый нажатый в едите, а отправлять следующий.
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
24.01.2017, 15:17
Цитата Сообщение от sarsmen Посмотреть сообщение
Ну чтож тут не понятного,
Не язвите =)

Я вроде понял, что вы имеете ввиду. Вам нужна задержка, пишите-пишете, и после он отправляет

Кидаете на форму выключенный таймер таймер . и заводите глобальную переменную int i= 3;
и код такймера такой:
C++
1
2
3
4
5
6
7
8
9
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
 if(1>--i)
   {
       ComPort1->WriteStr(Edit1->Text);
       Timer1->Enabled = false;
   }
}
//---------------------------------------------------------------------------
У едита в событии KeyPress след код:

C++
1
2
3
4
5
6
void __fastcall TForm1::Edit1KeyPress(TObject *Sender, System::WideChar &Key)
{
 i =3;
 Timer1->Enabled = true;
}
//---------------------------------------------------------------------------
0
3 / 2 / 2
Регистрация: 22.12.2016
Сообщений: 219
24.01.2017, 15:40  [ТС]
Цитата Сообщение от Dinkin Посмотреть сообщение
пишите-пишете, и после он отправляет
И опять он оправит кучу и клиент это не примет ему нужно принимать каждое нажатия по разу =)
Вообщем вы меня не поймёте очень жаль
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
24.01.2017, 15:44
C++
1
ComPort1->WriteStr(Edit1->Text[Edit1->Text.Length()]);
?
1
3 / 2 / 2
Регистрация: 22.12.2016
Сообщений: 219
24.01.2017, 16:24  [ТС]
Отлично, Спасибо работает но зато теперь ругается на функцию показывать не показывать пароль
Code
1
2
3
4
5
6
7
void __fastcall TTerminal::CheckBox1Click(TObject *Sender)
{
if (CheckBox1->Checked) {
 Edit1->PasswordChar='\0';
 }else{
 Edit1->PasswordChar='*';
} }
Тоесть поставил галочку программа вылетела с ошибкой )
0
 Аватар для Dinkin
783 / 556 / 136
Регистрация: 31.05.2013
Сообщений: 3,154
Записей в блоге: 3
24.01.2017, 16:29
Это Вы где то сами накосячили с событиями
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.01.2017, 16:29
Помогаю со студенческими работами здесь

Потеря символов пробела TextBox.Text
Привет всем! Вот подскажите в C# у меня есть TextBox в котором я ввожу строку &quot;01 &quot; (два пробела в конце). Далее string stringMy =...

std threading library взамен boost threading library
изучаю распараллеливание на примере &quot;примера&quot; с http://www.linux.org.ru/forum/development/4152264 , но там с использованием boost. Так...

PHP+ComPort
Добрый день всем, как можно отправить сообщения на компорт через php ?, в интернете поискал нашел примеры `mode com1: BAUD=9600...

Comport vs Delphi
Вечер в хату! Хочу спросить в 100500-й раз)) Есть прога на Delphi, есть Arduino. Скетч Arduino void setup() { ...

Не читает с ComPort
Добрый день, форумчане! Помогите, пожалуйста! Не могу считать с компорта. Затыкается на чтении, хотя терминал показывает, что данные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru