SerialPort и длинные SMS
Написана программа, которая принимает и отправляет 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-ка спокойно отправляется сторонними программами. А в моей - вываливается исключение.
Сорри за офтоп, а можно исходничек посмотреть (там где отправка / прием)?
У меня другая проблема - при записи символа в порт этот же символ мне возвращается в Read \ ReadExisting. Хотя к порту ничего не подключено. Не знаеш почему?
Нет, врядли это. Я выполняю запись методом Write. 100 байтов пишутся нормально, а 130 - вылетает исключение
Извини. Я бы с удовольствием, но это запрещено :(.
У меня тоже была проблема. При работе в HyperTerminale всё нормально (на команду "AT" возвращается ответ "OK"). А начал работать с SerialPort - на команду "AT" возвращается ответ "AT\nOK". Долго думал почему, а потом решил просто отбрасывать лишнюю часть :)
Действительно остается только:
1) Отбрасывать ненужную часть
2) Реализововать SerialPort самому )))
Что именно тебя интересует? Работа с SMS, модемом или SerailPort в C#?
Если с SMS, то глянь тут:
1. на codeproject.com есть либа SMSPDULib, она выполняет кодирование/декодирование SMS. но она не работает с длинными SMS (поэтому придётся дорабатывать), но могу и мой (доработанный вариант) дать
2. ещё глянь тут: http://www.isms.ru/articles.shtml
3. и полазь по поисковикам. ищи PDU
По поводу модема... Не так много команд, которые нужны для приёма/отправки SMS. Полазь по поисковикам. Или я могу описать их.
По поводу SerialPort. Тут совсем всё просто. глянь в MSDN :)
Оказалось, что если в порт запихивать большой кусок данных - вылазит исключение.
Но если разбить эти данные по 100 байт, и запихнуть фрагментами (без ожидания, просто подряд несколько Write) то всё работает нормально :)