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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.09.2016, 10:13   #1
rozhin@sapir.ru
 
Регистрация: 20.09.2016
Сообщений: 5
По умолчанию Ошибка CMS Error 304, Com-порт (Delphi)

Добрый день, не могу понять в чем проблема.
Работаю с com-портом модема Мтс (ZTE) для отсылки смс через компонент TComPort.
Программа формирует PDU насколько я понял верно. Через гипертерминал этот же пакет отправляется успешно.
Но при работе через приложение выходит ошибка от модема:
+CMS ERROR: 304
Отправляю следующим образом.
Формирую 3 строки
Код:
form1.edit1.text:='AT+CMGF=0'+#$D#$A;
form1.edit2.text:='AT+CMGS=' + Inttostr(Lng)+#$D#$A;
form1.edit3.text:=LMes+#$D#$A#$1A;
далее скармливаю это все через
Код:
ComPort.WriteStr(edit1.Text);
Обратная связь реализована через процедуру
Код:
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
  Str: String;
  Buf: Char;
begin
  ComPort.ReadStr(Str, Count);
  memo1.Lines.add(Str);
  Buf := char($8C);
  ComPort.Write(Buf,1);
end;
Сейчас пробую уже отправлять раз в секунду по таймеру эти три строки с интервалом в 1 сек.
Изменений нет.
В memo1 содержимое следующее

Цитата:
Порт открыт (COM7) 12:04:26

OK


>



+CMS ERROR: 304
Но при этом если я вставляю команды копированием из edit в гипертерминал, то смс уходят прекрасно. Подскажите куда копать.
rozhin@sapir.ru вне форума Ответить с цитированием
Старый 22.09.2016, 20:17   #2
FPaul
Форумчанин
 
Регистрация: 25.01.2015
Сообщений: 472
По умолчанию

Я бы попробовал для начала установить "прослушку" на порт и сравнить обмен. Их много, на любой вкус. Я когда-то пользовался бесплатной Device Monitoring Studio, но уже не помню, откуда скачивал, но точно с офсайта.

Может статься, что из Delphi отправляются не 1 байтные символы, а 2 байтные Unicode.
FPaul вне форума Ответить с цитированием
Старый 04.10.2016, 07:39   #3
rozhin@sapir.ru
 
Регистрация: 20.09.2016
Сообщений: 5
По умолчанию

Цитата:
Сообщение от FPaul Посмотреть сообщение
Я бы попробовал для начала установить "прослушку" на порт и сравнить обмен. Их много, на любой вкус. Я когда-то пользовался бесплатной Device Monitoring Studio, но уже не помню, откуда скачивал, но точно с офсайта.

Может статься, что из Delphi отправляются не 1 байтные символы, а 2 байтные Unicode.
Получается следующее. Почему-то отправляется дополнительный как я понял символ #13.
Portmon показывает следующее:
Код:
338	0.00041348	sms.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 10: AT+CMGF=0.	
339	0.00031448	sms.exe	IOCTL_SERIAL_WAIT_ON_MASK	QCUSB_COM11_1	SUCCESS		
340	0.00003296	sms.exe	IOCTL_SERIAL_GET_COMMSTATUS	QCUSB_COM11_1	SUCCESS		
341	0.00000361	sms.exe	IRP_MJ_READ	QCUSB_COM11_1	SUCCESS	Length 6: ..OK..	
342	0.00002665	sms.exe	IOCTL_SERIAL_GET_COMMSTATUS	QCUSB_COM11_1	SUCCESS		
343	0.00039564	sms.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 1: .	
344	0.99924542	sms.exe	IOCTL_SERIAL_WAIT_ON_MASK	QCUSB_COM11_1	SUCCESS		
345	0.00042624	sms.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 11: AT+CMGS=44.	
346	0.00765052	sms.exe	IOCTL_SERIAL_WAIT_ON_MASK	QCUSB_COM11_1	SUCCESS		
347	0.00002294	sms.exe	IOCTL_SERIAL_GET_COMMSTATUS	QCUSB_COM11_1	SUCCESS		
348	0.00000304	sms.exe	IRP_MJ_READ	QCUSB_COM11_1	SUCCESS	Length 4: ..> 	
349	0.00001038	sms.exe	IOCTL_SERIAL_GET_COMMSTATUS	QCUSB_COM11_1	SUCCESS		
350	0.00036336	sms.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 1: .	
351	0.99145292	sms.exe	IOCTL_SERIAL_WAIT_ON_MASK	QCUSB_COM11_1	SUCCESS		
352	0.00044391	sms.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 90: 0011000B919725332968F50008C11E041F04400438043204350442002C002004	
353	0.00051676	sms.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 1: .	
354	0.00689602	sms.exe	IOCTL_SERIAL_WAIT_ON_MASK	QCUSB_COM11_1	SUCCESS		
355	0.00001730	sms.exe	IOCTL_SERIAL_GET_COMMSTATUS	QCUSB_COM11_1	SUCCESS		
356	0.00000255	sms.exe	IRP_MJ_READ	QCUSB_COM11_1	SUCCESS	Length 2: ..	
357	0.00014180	sms.exe	IOCTL_SERIAL_GET_COMMSTATUS	QCUSB_COM11_1	SUCCESS		
358	0.00040872	sms.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 1: .	
359	0.00001621	sms.exe	IOCTL_SERIAL_WAIT_ON_MASK	QCUSB_COM11_1	SUCCESS		
360	0.00002975	sms.exe	IOCTL_SERIAL_GET_COMMSTATUS	QCUSB_COM11_1	SUCCESS		
361	0.00000292	sms.exe	IRP_MJ_READ	QCUSB_COM11_1	SUCCESS	Length 19: ..+CMS ERROR: 304..	
362	0.00002417	sms.exe	IOCTL_SERIAL_GET_COMMSTATUS	QCUSB_COM11_1	SUCCESS		
363	0.00029232	sms.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 1: .	
364	37.16949431	sms.exe	IOCTL_SERIAL_WAIT_ON_MASK	QCUSB_COM11_1	SUCCESS
Т.е. после каждой отправленной строки он дополнительно отсылает #13. Пока не могу понять на каком этапе и почему.
даже если просто отправить AT
Получается следующее
Код:
528	0.00000481	sms.exe	IOCTL_SERIAL_SET_HANDFLOW	QCUSB_COM11_1	SUCCESS	Shake:0 Replace:0 XonLimit:256 XoffLimit:256	
529	0.00000503	sms.exe	IOCTL_SERIAL_SET_TIMEOUTS	QCUSB_COM11_1	SUCCESS	RI:40 RM:0 RC:0 WM:100 WC:1000	
530	0.00000553	sms.exe	IOCTL_SERIAL_SET_WAIT_MASK	QCUSB_COM11_1	SUCCESS	Mask: RXCHAR RXFLAG TXEMPTY CTS DSR RLSD BRK ERR RING RX80FULL 	
531	0.00000528	sms.exe	IOCTL_SERIAL_GET_MODEMSTATUS	QCUSB_COM11_1	SUCCESS		
532	0.00000419	sms.exe	IOCTL_SERIAL_GET_MODEMSTATUS	QCUSB_COM11_1	SUCCESS		
533	20.93146702	sms.exe	IOCTL_SERIAL_WAIT_ON_MASK	QCUSB_COM11_1	SUCCESS		
534	0.00000809	sms.exe	IOCTL_SERIAL_GET_MODEMSTATUS	QCUSB_COM11_1	SUCCESS		
535	0.00054074	sms.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 4: at..	
536	0.00003481	sms.exe	IOCTL_SERIAL_GET_COMMSTATUS	QCUSB_COM11_1	SUCCESS		
537	0.00258299	sms.exe	IOCTL_SERIAL_WAIT_ON_MASK	QCUSB_COM11_1	SUCCESS		
538	0.00002976	sms.exe	IOCTL_SERIAL_GET_COMMSTATUS	QCUSB_COM11_1	SUCCESS		
539	0.00000320	sms.exe	IRP_MJ_READ	QCUSB_COM11_1	SUCCESS	Length 6: ..OK..	
540	0.00002658	sms.exe	IOCTL_SERIAL_GET_COMMSTATUS	QCUSB_COM11_1	SUCCESS		
541	0.00031298	sms.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 1: .	
542	0.00000000	sms.exe	IOCTL_SERIAL_WAIT_ON_MASK	QCUSB_COM11_1
rozhin@sapir.ru вне форума Ответить с цитированием
Старый 04.10.2016, 08:12   #4
rozhin@sapir.ru
 
Регистрация: 20.09.2016
Сообщений: 5
По умолчанию

Нашел ошибку.
Сделал аналогично гипертерминалу, когда он отправляет посимвольно.
Вот что если через гипертерминал при отправке AT
Код:
1079	0.00240028	hypertrm.exe	IRP_MJ_CREATE	QCUSB_COM11_1	SUCCESS	Options: Open 	
1080	0.00000677	hypertrm.exe	IOCTL_SERIAL_SET_QUEUE_SIZE	QCUSB_COM11_1	SUCCESS	InSize: 8192 OutSize: 8192	
1081	0.00000142	hypertrm.exe	IOCTL_SERIAL_CONFIG_SIZE	QCUSB_COM11_1	SUCCESS	Size: 96	
1082	0.00052985	hypertrm.exe	IOCTL_SERIAL_GET_BAUD_RATE	QCUSB_COM11_1	SUCCESS		
1083	0.00050615	hypertrm.exe	IOCTL_SERIAL_GET_LINE_CONTROL	QCUSB_COM11_1	SUCCESS		
1084	0.00000632	hypertrm.exe	IOCTL_SERIAL_GET_CHARS	QCUSB_COM11_1	SUCCESS		
1085	0.00000576	hypertrm.exe	IOCTL_SERIAL_GET_HANDFLOW	QCUSB_COM11_1	SUCCESS		
1086	0.00039372	hypertrm.exe	IOCTL_SERIAL_GET_BAUD_RATE	QCUSB_COM11_1	SUCCESS		
1087	0.00036196	hypertrm.exe	IOCTL_SERIAL_GET_LINE_CONTROL	QCUSB_COM11_1	SUCCESS		
1088	0.00000598	hypertrm.exe	IOCTL_SERIAL_GET_CHARS	QCUSB_COM11_1	SUCCESS		
1089	0.00000554	hypertrm.exe	IOCTL_SERIAL_GET_HANDFLOW	QCUSB_COM11_1	SUCCESS		
1090	0.00112566	hypertrm.exe	IOCTL_SERIAL_SET_BAUD_RATE	QCUSB_COM11_1	SUCCESS	Rate: 115200	
1091	0.00061404	hypertrm.exe	IOCTL_SERIAL_SET_DTR	QCUSB_COM11_1	SUCCESS		
1092	0.00135267	hypertrm.exe	IOCTL_SERIAL_SET_LINE_CONTROL	QCUSB_COM11_1	SUCCESS	StopBits: 1 Parity: NONE WordLength: 8	
1093	0.00000628	hypertrm.exe	IOCTL_SERIAL_SET_CHAR	QCUSB_COM11_1	SUCCESS	EOF:48 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13	
1094	0.00053745	hypertrm.exe	IOCTL_SERIAL_SET_HANDFLOW	QCUSB_COM11_1	SUCCESS	Shake:80000009 Replace:80000080 XonLimit:80 XoffLimit:200	
1095	0.00000628	hypertrm.exe	IOCTL_SERIAL_SET_TIMEOUTS	QCUSB_COM11_1	SUCCESS	RI:10 RM:0 RC:0 WM:0 WC:5000	
1096	0.00000311	hypertrm.exe	IOCTL_SERIAL_SET_WAIT_MASK	QCUSB_COM11_1	SUCCESS	Mask: RLSD ERR 	
1097	0.00000000	hypertrm.exe	IOCTL_SERIAL_WAIT_ON_MASK	QCUSB_COM11_1			
1098	7.20455573	hypertrm.exe	IRP_MJ_READ	QCUSB_COM11_1	TIMEOUT	Length 6: ..OK..	
1099	0.00029023	hypertrm.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 1: a	
1100	0.00031816	hypertrm.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 1: t	
1101	0.00041854	hypertrm.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 1: .	
1102	0.00000000	hypertrm.exe	IRP_MJ_READ	QCUSB_COM11_1		Length 80
То что получается у меня

Код:
1108	0.00311378	sms.exe	IRP_MJ_CREATE	QCUSB_COM11_1	SUCCESS	Options: Open 	
1109	0.00000826	sms.exe	IOCTL_SERIAL_SET_QUEUE_SIZE	QCUSB_COM11_1	SUCCESS	InSize: 1024 OutSize: 1024	
1110	0.00054730	sms.exe	IOCTL_SERIAL_GET_BAUD_RATE	QCUSB_COM11_1	SUCCESS		
1111	0.00085948	sms.exe	IOCTL_SERIAL_GET_LINE_CONTROL	QCUSB_COM11_1	SUCCESS		
1112	0.00000652	sms.exe	IOCTL_SERIAL_GET_CHARS	QCUSB_COM11_1	SUCCESS		
1113	0.00000429	sms.exe	IOCTL_SERIAL_GET_HANDFLOW	QCUSB_COM11_1	SUCCESS		
1114	0.00131863	sms.exe	IOCTL_SERIAL_SET_BAUD_RATE	QCUSB_COM11_1	SUCCESS	Rate: 115200	
1115	0.00054847	sms.exe	IOCTL_SERIAL_CLR_RTS	QCUSB_COM11_1	SUCCESS		
1116	0.00047070	sms.exe	IOCTL_SERIAL_CLR_DTR	QCUSB_COM11_1	SUCCESS		
1117	0.00144113	sms.exe	IOCTL_SERIAL_SET_LINE_CONTROL	QCUSB_COM11_1	SUCCESS	StopBits: 1 Parity: NONE WordLength: 8	
1118	0.00001532	sms.exe	IOCTL_SERIAL_SET_CHAR	QCUSB_COM11_1	SUCCESS	EOF:48 ERR:0 BRK:0 EVT:0 XON:11 XOFF:13	
1119	0.00000717	sms.exe	IOCTL_SERIAL_SET_HANDFLOW	QCUSB_COM11_1	SUCCESS	Shake:0 Replace:0 XonLimit:256 XoffLimit:256	
1120	0.00000507	sms.exe	IOCTL_SERIAL_SET_TIMEOUTS	QCUSB_COM11_1	SUCCESS	RI:40 RM:0 RC:0 WM:100 WC:1000	
1121	0.00000670	sms.exe	IOCTL_SERIAL_SET_WAIT_MASK	QCUSB_COM11_1	SUCCESS	Mask: RXCHAR RXFLAG TXEMPTY CTS DSR RLSD BRK ERR RING RX80FULL 	
1122	0.00002596	sms.exe	IOCTL_SERIAL_GET_MODEMSTATUS	QCUSB_COM11_1	SUCCESS		
1123	5.65719674	sms.exe	IOCTL_SERIAL_WAIT_ON_MASK	QCUSB_COM11_1	SUCCESS		
1124	0.00000737	sms.exe	IOCTL_SERIAL_GET_MODEMSTATUS	QCUSB_COM11_1	SUCCESS		
1125	0.00001144	sms.exe	IOCTL_SERIAL_GET_MODEMSTATUS	QCUSB_COM11_1	SUCCESS		
1126	0.00055890	sms.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 1: a	
1127	0.00036664	sms.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 1: t	
1128	0.00042806	sms.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 2: ..	
1129	0.00003608	sms.exe	IOCTL_SERIAL_GET_COMMSTATUS	QCUSB_COM11_1	SUCCESS		
1130	0.01464676	sms.exe	IOCTL_SERIAL_WAIT_ON_MASK	QCUSB_COM11_1	SUCCESS		
1131	0.00003618	sms.exe	IOCTL_SERIAL_GET_COMMSTATUS	QCUSB_COM11_1	SUCCESS		
1132	0.00000398	sms.exe	IRP_MJ_READ	QCUSB_COM11_1	SUCCESS	Length 6: ..OK..	
1133	0.00002622	sms.exe	IOCTL_SERIAL_GET_COMMSTATUS	QCUSB_COM11_1	SUCCESS		
1134	0.00036092	sms.exe	IRP_MJ_WRITE	QCUSB_COM11_1	SUCCESS	Length 1: .	
1135	0.00000000	sms.exe	IOCTL_SERIAL_WAIT_ON_MASK	QCUSB_COM11_1
Получается что программа дополнительно отправляет некий символ который тут показан ".."
rozhin@sapir.ru вне форума Ответить с цитированием
Старый 04.10.2016, 08:26   #5
rozhin@sapir.ru
 
Регистрация: 20.09.2016
Сообщений: 5
По умолчанию Тема закрыта

Тема закрыта
Код:
procedure TForm1.ComPortRxChar(Sender: TObject; Count: Integer);
var
  Str: String;
  Buf: Char;
begin
  ComPort.ReadStr(Str, Count);
  memo1.Lines.add(Str);
  memo3.Clear;
  memo3.Lines.Add(Str);
  //memo1.Text:= memo1.Text + Str;
  //edit2.Text:=edit2.Text + Str;
  Buf := char($8C);
  ComPort.Write(Buf,1);
end;
Закомментировал строку ComPort.Write(Buf,1) и все пошло.
rozhin@sapir.ru вне форума Ответить с цитированием
Старый 04.10.2016, 08:54   #6
rozhin@sapir.ru
 
Регистрация: 20.09.2016
Сообщений: 5
По умолчанию Всем огромная благодарность

Всем огромная благодарность!
rozhin@sapir.ru вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Visual Studio С++. при проверке условий ошибка error C2059: syntax error : ')' Kitekat Помощь студентам 5 07.07.2014 18:36
ошибка в delphi "[Error] WARNING. Duplicate resource(s)" Winexcel Общие вопросы Delphi 5 05.10.2013 13:08
Ошибка Parse error: syntax error, unexpected T_STRING в PHP gunsoy PHP 1 20.07.2012 23:18
Периодическая ошибка Run-time error -2147417848 (80010108) Automation error в файле с макросом faraviper Microsoft Office Excel 0 24.02.2011 16:23
ошибка при старте макроса "Automation error (Error 440)" Дятел Microsoft Office Excel 7 29.11.2010 17:34