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

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

14.01.2017, 06:25. Показов 2692. Ответов 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,145
Записей в блоге: 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,145
Записей в блоге: 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,145
Записей в блоге: 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,145
Записей в блоге: 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,145
Записей в блоге: 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,145
Записей в блоге: 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,145
Записей в блоге: 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,145
Записей в блоге: 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
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru