Форум программистов, компьютерный форум, киберфорум
Delphi
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.97/58: Рейтинг темы: голосов - 58, средняя оценка - 4.97
2 / 2 / 0
Регистрация: 23.08.2011
Сообщений: 79

Com-port не работает

11.06.2012, 22:09. Показов 12875. Ответов 51
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый час господа.
Не получается запрограммировать Com-порт.
Делаю так:
Открываю порт так
Delphi
1
2
3
4
5
6
7
hCom := CreateFile('COM4',GENERIC_READ or GENERIC_WRITE, 0, nil,
OPEN_EXISTING, FILE_FLAG_OVERLAPPED,0);
if hCom=INVALID_HANDLE_VALUE then begin
   ShowMessage('не удалось открыть'); //не удалось открыть
    end
    else begin Memo1.Text:=IntToStr(hCom);
    end;
и вывожу нэндл в мемо просто так для проверки
Пишу в порт команду на кнопке
Delphi
1
2
WriteFile(hCom, 'Команда 1', 256, Bytes, nil);
WriteFile(hCom, 'Команда 2', 256, Bytes, nil);
а результата нет
в чем дело? не подскажете?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.06.2012, 22:09
Ответы с готовыми решениями:

Не работает LAN-port
Доброго времени суток,форумчане.Перестал работать LAN-порт, (не горят лампочки), в диспетчере задач нет сетевого устройства, в AIDA смотрел...

не работает display port
карта radeon 5830 не хочет работать с display port mini возможно стоит купить просто кабель dp - dp ?

Не работает RDP через Port Knocking
Приветствую Вас, уважаемые коллеги и участники форума. Столкнулся с такой ситуацией: имеется микротик на котором реализован Port...

51
2 / 2 / 0
Регистрация: 23.08.2011
Сообщений: 79
13.06.2012, 16:56  [ТС]
Студворк — интернет-сервис помощи студентам
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
    private
  DCB:TDCB;
  Errors, Bytes : Cardinal;
  TheStruct:TCOMSTAT;
  buffer:string;
  Timeouts: TCommTimeOuts;
 
 
 
var
  Form1: TForm1;
   hCom: THandle=0;
  procedure sendcom(s: string);
 
procedure TForm1.Button1Click(Sender: TObject);
begin
hCom := CreateFile('COM4',GENERIC_READ or GENERIC_WRITE, 0, nil,
OPEN_EXISTING, FILE_FLAG_OVERLAPPED,0);
if hCom=INVALID_HANDLE_VALUE then begin
   ShowMessage('не удалось открыть'); //не удалось открыть
    end
    else begin ShowMessage('удалось открыть');
    end;
 
SetupComm(hCom,1600,1600);   //  установкf размеров внутренних буферов приема и передачи
 
SetCommState(hCom,DCB);        //  чтение/запись структуры DCB порта
with DCB do begin              //  настроить нужным образом
    BaudRate:=12;               //  скорость порта, 115200 деленная на значение
    ByteSize:=8;               //  число информационных бит в передаваемых и принимаемых байтах
    Parity:=NoParity;          //  Бит чесности
    StopBits:=OneStopBit;      //  1 стоповый бит
end;
SetCommState(hCom,DCB);
 
SetCommTimeouts(hCom,Timeouts);    //установка таймаутов
 with TimeOuts do begin
  ReadIntervalTimeout := 1;
  ReadTotalTimeoutMultiplier := 0;
  ReadTotalTimeoutConstant := 1;
  WriteTotalTimeoutMultiplier := 2;
  WriteTotalTimeoutConstant := 2;
 end;
 
Memo1.Text:=IntToStr(hCom);
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
    CloseHandle(hCom);
    Form1.Close;
end;
 
procedure TForm1.Button3Click(Sender: TObject);
var
lpModems : DWORD;
nomer, textsms : string;
begin
nomer := '+375291630378';
textsms := 'Hello, world';
 
 SendCom('AT+CMGF=0' + #13 + #10);
 ShowMessage('Прошло 1');
 Sleep(500);
 
  SendCom('AT+CMGS="' + nomer + '"' + #13 + #10);
  ShowMessage('Прошло 2');
  Sleep(500);
 
    SendCom(textsms + #26);
    ShowMessage('Прошло 3') ;
    Sleep(500);
 
ShowMessage('Наверно записалось');
end;
 
 
procedure SendCom(s: string);
var TempArray: array[1..255] of Byte;
    Count    : Integer;
    TX_Count : cardinal;
    x : LongBool;
begin
 for Count:= 1 to Length(S) do
   TempArray[Count]:= Ord(S[Count]);
 
 x:=WriteFile(hCom, TempArray, Length(S), TX_Count, nil); // пишет строку в порт
 if x=false then ShowMessage('Непрошло');
 ShowMessage(IntToStr(GetLastError));
end;
 
 
procedure TForm1.Button4Click(Sender: TObject);
Var
lpModems : DWORD;
begin
GetCommModemStatus(hCom,lpModems);
Memo1.Lines.Add('CTS='+IntToStr(MS_CTS_ON));
Memo1.Lines.Add('DSR='+IntToStr(MS_DSR_ON));
 
end;
 
end.
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
13.06.2012, 22:29
Delphi
1
BaudRate:=12;
по-вашему, это что за скорость?

Delphi
1
2
3
x:=WriteFile(hCom, TempArray, Length(S), TX_Count, nil); // пишет строку в порт
 if x=false then ShowMessage('Непрошло');
 ShowMessage(IntToStr(GetLastError));
нафиг с пляжу проверку, просто WriteFile(). Да и сама проверка должна быть такой:
Если функция завершается успешно, величина возвращаемого значения - не ноль (true). Если функция завершается с ошибкой, величина возвращаемого значения - ноль (false).
p.s: это все расписано в MSDN.
0
2 / 2 / 0
Регистрация: 23.08.2011
Сообщений: 79
14.06.2012, 09:36  [ТС]
Цитата Сообщение от raxp Посмотреть сообщение
по-вашему, это что за скорость?
Ну по идее да: 115200 делится на значение 12 = 9600
Цитата Сообщение от raxp Посмотреть сообщение
нафиг с пляжу проверку, просто WriteFile(). Да и сама проверка должна быть такой:
какой такой False - это же тот же нуль в булевом виде
Цитата Сообщение от raxp Посмотреть сообщение
p.s: это все расписано в MSDN.
Там все на английском, а переводчик переводит так, что плакать хочется. Вот Пример "Если функция завершается успешно, возвращаемое значение равно нулю (TRUE). В случае неудачи, или завершает асинхронно, возвращаемое значение равно нулю (FALSE)."

PS: даже если ставлю 9600 и вырубаю проверку, то типа проходит, но SMS не приходит.
Как только включаю проверку, то получается , что х=false

В общем не получается у меня ни чего. Что-то как-то не так

Добавлено через 3 минуты
Смотрю еще другие примеры, там все точно так же, но у них почему-то работает, а у меня нет
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
14.06.2012, 10:24
...возьмите готовый уже пример.
0
2 / 2 / 0
Регистрация: 23.08.2011
Сообщений: 79
14.06.2012, 10:35  [ТС]
Да не все так просто. Где-то написано в общих чертах, где-то реализация через поток, где-то через какие-то компоненты.
Вот один из примеров.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
procedure SendSMS(AComPort: integer; AMsg: String; ANumTel: String); 
var
  hFile: THandle;
 
  procedure WriteStr(AStr: String); //пишет в порт переданную строку
  var
    LWrited: Cardinal;
  begin
    //Пишем в порт
    WriteFile(hFile, PAnsiChar(AStr)^, Length(AStr), LWrited, nil);
  end;
 
begin
  //открываем порт
  hFile := Windows.CreateFile(PChar('\\.\COM' + IntToStr(AComPort)), GENERIC_READ or GENERIC_WRITE, 0, nil, OPEN_EXISTING, 0, 0); 
 
  //если открылся
  if (hFile <> INVALID_HANDLE_VALUE) then
  begin
    try
      //устанавливаем текстовый режим
      WriteStr('AT+CMGF=1' + #$D#$A);
      //вводим номер в формате "+79xxxxxxxxx"
      WriteStr('AT+CMGS="'+ANumTel+'"' + #$D#$A);
      //вводим текст сообщения, только латиница
      WriteStr(AMsg + #$D#$A#$1A);
    finally
      //закрываем порт
      Windows.CloseHandle(hFile);
    end;
  end;
end;
У меня тоже самое, а не работает
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
14.06.2012, 10:44
...вам статьи приложил? Оттуда и возьмите.

Ну по идее да: 115200 делится на значение 12 = 9600
это вы попутали с МК. Тут задание скорости в явном виде.
0
2 / 2 / 0
Регистрация: 23.08.2011
Сообщений: 79
14.06.2012, 11:11  [ТС]
Там тоже точно так же написано. Кусками функций + электроника.
Все равно не понятно.

Ладно.
Еще раз спасибо за помощь
0
14.06.2012, 11:13

Не по теме:

Извините. можно ли управлять через модем другим (удаленным) модемом?

0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
14.06.2012, 11:44

Не по теме:

Цитата Сообщение от Michael
Извините. можно ли управлять через модем другим (удаленным) модемом?
если в удаленном модеме есть своего рода RTOS, можно ...есть GSM-терминалы со встроенной JAVA-машиной, есть с поддержкой питон-программ.



Цитата Сообщение от Courageous
Там тоже точно так же написано. Кусками функций + электроника.
Все равно не понятно.
а еще там есть ссылки на полные исходники. Ссылки обычно приводятся в конце статьи. А электроника, электроника там отдельно, просто читать внимательнее нужно.
1
2 / 2 / 0
Регистрация: 23.08.2011
Сообщений: 79
14.06.2012, 12:05  [ТС]
Цитата Сообщение от raxp Посмотреть сообщение
а еще там есть ссылки на полные исходники. Ссылки обычно приводятся в конце статьи. А электроника, электроника там отдельно, просто читать внимательнее нужно.
В них темный лес, для того у кого не получается отправить простой запрос в порт.
А второй вообще на с++
0
14.06.2012, 12:37

Не по теме:

Цитата Сообщение от raxp Посмотреть сообщение
Извините. можно ли управлять через модем другим (удаленным) модемом?
Правильно ли я понял из прочитанной информации по АТ-командам, что при установлении соединения между двумя модемами оба автоматически переходят в режим передачи данных, и в этом режиме я никак не могу скомандовать удаленному модему перейти в командный режим с помощью передачи escape-последовательности (или как-то еще)?

0
14.06.2012, 12:45

Не по теме:

Правильно ли я понял из прочитанной информации по АТ-командам
...модем модему - рознь, реализация AT-команд тоже может отличаться от производителя к производителю.

Заведите отдельную (свою) тему.

1
2 / 2 / 0
Регистрация: 23.08.2011
Сообщений: 79
15.06.2012, 11:46  [ТС]
Там (в исходниках) ни чего не понятно

Добавлено через 16 часов 13 минут
Все равно не понятно
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
15.06.2012, 19:29
...что конкретно непонятно? Если все непонятно, то вам рано работать с модемами. Начните с литературы.
0
2 / 2 / 0
Регистрация: 23.08.2011
Сообщений: 79
15.06.2012, 20:54  [ТС]
Цитата Сообщение от raxp Посмотреть сообщение
...что конкретно непонятно? Если все непонятно, то вам рано работать с модемами. Начните с литературы.
Вы же видели код
Не понятно то, что все вроде бы правильно, но результата нет.
Так же открываю, так же настраиваю, так же отправляю, но нет результата. Вот что не понятно. Почему? В чем ошибка?
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
15.06.2012, 22:54
...нет, не так же.
0
2 / 2 / 0
Регистрация: 23.08.2011
Сообщений: 79
02.07.2012, 17:08  [ТС]
А есть ли другая литература где подробнее описана работа с портом
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
02.07.2012, 21:55
...разумеется, MSDN - первоисточник.
0
2 / 2 / 0
Регистрация: 23.08.2011
Сообщений: 79
03.07.2012, 01:13  [ТС]
Не так выразился.
Не с кусками функций, а нормальным, рабочим примером. Что бы даже мне было понятно как и что делать.
0
 Аватар для raxper
10237 / 6615 / 498
Регистрация: 28.12.2010
Сообщений: 21,154
Записей в блоге: 1
03.07.2012, 08:06
Тут http://msdn.microsoft.com/en-u... 02693.aspx рабочие примеры. А вообще, Delphi-World в помощь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.07.2012, 08:06

Не работает монитор через dvi port
Есть мать Asus h77ma g43 и видяха nvidia geforce 8600 GT. Раньше стоял старенький монитор, подключенный через VGA на видяхе. Сейчас купил...

Работа с UDP протоколом за роутером (Port Restricted Cone NAT и в добавок Random port )
Посылая сообщение на внешний ip Nat роутера меняет порт.... и при попытки отправить ответ и указывая либо старый либо новый порт с ip...

У фаервола не работает функция Port Scanning Defense
Запускаю исходники фаервола разработанного на Windows Filtering Platform. Фаервол использует user mode. Все функции блокировки по...

Работа Scilab Serial Port Library (COM port)
Как работает Scilab Serial Port Library ? (может кто то встречал описание подробное, поделитесь ссылкой) Нужно получать с COM port...

Роутер TL-WR845N работает в режиме WAN Port 10 мбит/с
Здравствуйте, сам в роутерах не силен, нуждаюсь в помощи. Есть роутер TL-WR845N, проблема в том что роутер переключаеться в режим до 10...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru