Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

SerialPort и длинные SMS

4.3K
08 января 2007 года
VasAlVit
33 / / 03.09.2004
Собственно. Язык C#.

Написана программа, которая принимает и отправляет SMS-ки. Длинные SMS-ки разрезаются на короткие. Серьёзных притензий к программе нет.

Но есть одна проблема. Если длинную SMS-ку разрезать на огрызки по 100 символов - программа работает. Но если увеличить длинну одного огрызка до 130-140 символов, то рпи попытке отправить SMS-ку в порт вываливается исключение:

System.IO.IOException was unhandled
Message="A device attached to the system is not functioning.\r\n"
Source="System"

Может кто знает, что это такое и как с ним бороться?

Вообще проблема с отправкой SMS-ок длинной от 100 до 140 символов.

Есть SMS:

sms v 130 simvolov :)
1, 2, 3, 4, 5, 6, 7, 8, 9, 0, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z.

Длинна SMS - 132 символа. SMS-ка закодирована в:
0011000c917325796044260000aa84f3f61c6407c56630d03cddb6bfd96f3b48976a28622c908c059ab1403416a8c602d958a01b0b846381722c108c050ab340621668cc029159a0320b646681ce2c109a054ab3406a1668cd02b159a0360be46681de2c109c058ab340721668ce02d159a03a0b646781ee2c109e05cab3407a574301

PDUSpy нормально расшифровывает эту SMS-ку. Также эта SMS-ка спокойно отправляется сторонними программами. А в моей - вываливается исключение.
23K
10 января 2007 года
DIAMONDX
5 / / 04.01.2007
Может тебе надо проверять управляющие сигналы сигналы DTR / RTS перед отправкой второго большого куска? Попробуй отослать 1 кусок а потом 2-ой через секунд 10.

Сорри за офтоп, а можно исходничек посмотреть (там где отправка / прием)?
У меня другая проблема - при записи символа в порт этот же символ мне возвращается в Read \ ReadExisting. Хотя к порту ничего не подключено. Не знаеш почему?
4.3K
10 января 2007 года
VasAlVit
33 / / 03.09.2004
Цитата: DIAMONDX
Может тебе надо проверять управляющие сигналы сигналы DTR / RTS перед отправкой второго большого куска? Попробуй отослать 1 кусок а потом 2-ой через секунд 10.



Нет, врядли это. Я выполняю запись методом Write. 100 байтов пишутся нормально, а 130 - вылетает исключение

Цитата: DIAMONDX
Сорри за офтоп, а можно исходничек посмотреть (там где отправка / прием)?



Извини. Я бы с удовольствием, но это запрещено :(.

Цитата: DIAMONDX
У меня другая проблема - при записи символа в порт этот же символ мне возвращается в Read \ ReadExisting. Хотя к порту ничего не подключено. Не знаеш почему?



У меня тоже была проблема. При работе в HyperTerminale всё нормально (на команду "AT" возвращается ответ "OK"). А начал работать с SerialPort - на команду "AT" возвращается ответ "AT\nOK". Долго думал почему, а потом решил просто отбрасывать лишнюю часть :)

23K
10 января 2007 года
DIAMONDX
5 / / 04.01.2007
Блин, а почему так )). Совсем непонятно. И помоему тут нам никто не поможет! :(
Действительно остается только:
1) Отбрасывать ненужную часть
2) Реализововать SerialPort самому )))
20K
17 января 2007 года
Kubivan
2 / / 22.08.2006
А исходники можешь выложить? Или хотябы ссылки на статьи по теме.
4.3K
18 января 2007 года
VasAlVit
33 / / 03.09.2004
Цитата: Kubivan
А исходники можешь выложить? Или хотябы ссылки на статьи по теме.


Что именно тебя интересует? Работа с SMS, модемом или SerailPort в C#?

Если с SMS, то глянь тут:
1. на codeproject.com есть либа SMSPDULib, она выполняет кодирование/декодирование SMS. но она не работает с длинными SMS (поэтому придётся дорабатывать), но могу и мой (доработанный вариант) дать
2. ещё глянь тут: http://www.isms.ru/articles.shtml
3. и полазь по поисковикам. ищи PDU

По поводу модема... Не так много команд, которые нужны для приёма/отправки SMS. Полазь по поисковикам. Или я могу описать их.

По поводу SerialPort. Тут совсем всё просто. глянь в MSDN :)

4.3K
18 января 2007 года
VasAlVit
33 / / 03.09.2004
Да. По поводу темы. Проблема решена :)
Оказалось, что если в порт запихивать большой кусок данных - вылазит исключение.
Но если разбить эти данные по 100 байт, и запихнуть фрагментами (без ожидания, просто подряд несколько Write) то всё работает нормально :)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог