Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Проблема приема данных из СОМ порта
|
|||
|---|---|---|---|
|
#18+
Прошу помочь решить небольшую проблему (или большую). Мне поручили написать программу получения данных с внешнего оборудования через СОМ порт. Особенность состоит в том, что передача начинается по нажатию кнопки на внешнем устройстве. Передача ведется сразу, без всяких опросов о готовности и пр. Данные передаются одним блоком в 32К (32768 байт), а буфер СОМ порта может быть размером только 32767 байт, по этому последний байт теряется. Я сначала запускаю цикл опроса порта, а потом нажимаю на устройстве кнопку передачи. Dim Buffer As String Do DoEvents Buffer = Buffer & MSComm1.Input Loop Until Len(Buffer) = 32768 По идее, буфер порта должен непрерывно очищаться, а в переменной Buffer должна накапливаться передаваемая информация. Но как только начинается передача, программа впадает в ступор и не выходит из него, пока не будет передана вся информация. В переменной Buffer оказывается столько информации, каков размер буфера СОМ порта, остальная информация теряется. Причем эта ситуация возникает на всех компьютерах, кроме моего (у меня прием идет по частям). попытка использовать свойства MSComm1.Break = True MSComm1.RThreshold = 1 или 100 ни к чему не привели. В чем может быть дело? Программировал на VB6 с установленным SP6. OC Windows 98SE. На других машинах: Windows 95, Windows 98SE, Windows ME. Установки параметров портов везде одинаковые - число бит, скорость, контроль, стоповые биты, управление потоком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2004, 18:17 |
|
||
|
Проблема приема данных из СОМ порта
|
|||
|---|---|---|---|
|
#18+
OutBufferSize Property Sets and returns the size, in bytes, of the transmit buffer. По описанию, это свойство изменяет размеры буфера передачи. Поменяй его Joss сам я работать с OutBufferSize не пробовал. Второй выход использовать напрямую функции API. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2004, 18:25 |
|
||
|
Проблема приема данных из СОМ порта
|
|||
|---|---|---|---|
|
#18+
> Green2 Я как раз и этим параметром и изменяю размер буфера, но максимальный размер 32767, а мне надо 32768. А API я не пользовался. Где бы глянуть пример для порта? Кроме того остается непонятным, почему программа не реагирует на действия, пока не закончен прием? И почему на моем компьютере прием идет по частям, а на всех остальных полным блоком? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2004, 09:37 |
|
||
|
Проблема приема данных из СОМ порта
|
|||
|---|---|---|---|
|
#18+
Есть примеры в MSDN, они на 100% сишные. Пример ожидания события. Код: plaintext 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. авторИ почему на моем компьютере прием идет по частям, а на всех остальных полным блоком? понятия не имею ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2004, 10:29 |
|
||
|
Проблема приема данных из СОМ порта
|
|||
|---|---|---|---|
|
#18+
Теперь всё это надо всунуть в программу на VB? М-да-а-а... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2004, 15:08 |
|
||
|
Проблема приема данных из СОМ порта
|
|||
|---|---|---|---|
|
#18+
Засунуть это в программу на VB несложно, надо лишь экспортировать нужные функции Около 4 лет назад с помощью этих функций я написал программу для COM на Borland С++. она отлично работала, пока мы не перенесли её на другой компьютер, оказалось, что Borland C использует свои dll и без них не работает. Тогда мы плюнули на это, и стали делать на VB. Но, повторюсь, перенести программу несложно. (для меня) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.05.2004, 15:38 |
|
||
|
|

start [/forum/topic.php?fid=60&msg=32511891&tid=2169605]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 337ms |

| 0 / 0 |
