|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
в общем и целом умею работать с ком портом. но необходимо организовать перебор указанных ком портов и все их опросить Код: c# 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. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 08:50 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
des1roer Очень смутно у вас написано, и без понимания. Таймер вот разве можно так использовать - создавать новый в цикле, присваивать обработчик, запускать и выходить из цикла..... Какую вообще пробему вы решаете таким образом? Что же касается всей задачи - то чтобы предложить что-то оптимальное надо знать больше про ваши требования. Например - эта апликация все время запущена, или должна подняться - сделать работу -упасть? А между обработками портов база данных может измениться? (Мне кажется что врядли - но всякое бывает...) И так далее. Если вы учитесь - попробуйте подумать об обьекте, который может выполнить всю работу с любым ком портом сам. Если у вас будет такой обьект, то вы сможете организовать коллекцию таких обьектов, а не писать замусоренные подключениями-отключениями циклы.... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 11:57 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
des1roer, соглашусь с коллекцией наблюдателей, принцип хоть отсюда http://stackoverflow.com/questions/15124132/serial-port-polling-and-data-handling, над таймером тоже посмеялся )) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 12:34 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
дело такое - сервис получает список компортов, получает что он должен отправить на эти компорты. затем что получил то пишет в базу. если с обработкой опс серверов проблем не возникло (там в цикле довольно просто оббежать все порты), то тут необходимо создавать это событие eventhandler (вот тут то и главная загвоздка) к одному то подцепиться проблем не возникает, необходимо в цикле перебирать все полученные компорты\что посылать ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 12:37 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
таймер нужен чтобы постоянно опрашивать ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 12:39 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
des1roer, наблюдатель ( как единица) должен быть самодостаточным, он должен сам знать что ему делать в каких ситуациях куда писать и что отвечать, это все естественно присваивается ему ( учим его как поступать) при инициализации ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 12:45 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
ну я ему даю значение ком порта, что посылать пишу, таймер устанавливаю. но не известно будет ли один ком порт, а сколько их будет не знаю ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 12:52 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
des1roer, тут и напрашивается ответ, если наблюдатели изолированы между собой ( ну может в екшене где пересекаются с аккумулятором) на каждый порт вешаем наблюдателя: 100 портов 100 наблюдателей ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 12:59 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
это крайне плохое решение мне кажется. есть 1 сервис - он может опрашивать все опс сервера что к нему подключены, все железяки по ip, необходимо еще и все com порты просматривать. т.е. как нибудь в цикле перебирать к какому порту цепляться и что посылать ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 13:14 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
des1roerэто крайне плохое решение мне кажется. Обоснуйте. У вас будет коллекция обьектов, которые могут быть подключены к своим портам, могут быть не подключены - это все пишется. Во внешнем коде будет только перебор этих обьектов (любого их количества). Что вы боитесь растратить? Память? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 13:20 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
вы предлагаете мне создать порядка 20-30 объектов для компортов, при реальном существовании 6-7 и не факт что не будет компорта от какого нить индусского производителя за номером 123 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 13:29 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
D129, авторвы предлагаете мне создать порядка 20-30 объектов для компортов, при реальном существовании 6-7 гыггы, Данатос, тут бесполезно спорить, то о чем мы говорим по существу не несет никакого предмета обучения или получения навыков для ТА, только время, пустая епля в пустую и попытки прикрутит тесты к расползающемуся киселю, вставят в мозг принятия правильных решений. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 13:39 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
мне нужно то поменять в трех местах переменную чтобы другой ком порт указать Код: c# 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 13:40 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
о чем вы говорите? вы действительно для каждого компорта создаете своего слушателя? а если они (считай все) - виртуальные. и число их может впоследствии расти - и COM200 не будет являться чем то сверхъестественным? как такое написать? ну или может как нибудь динамически слушателей добавлять что бы не врукопашную все забивать7 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 13:43 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
des1roer и не факт что не будет компорта от какого нить индусского производителя за номером 123 Важно другое - когда появится компорт за номером 123? На каком этапе жизни аппликации? Вариантов много. Например - на этапе кодирования. Тогда, чисто технически, можно и захардкодить все. :-) На этапе, когда сервис запущен? (А компорты разве подключаются динамически? может я чего и не знаю... ) При запуске сервиса? В любом случае - количество обьектов будет зависеть только от конфигурации, а она, как я понимаю, читается из базы данных? Тогда почему вы считаете что обьектов может "больше чем нужно" ? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 13:48 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
Где-то в степи тут бесполезно спорить... :-) Ну а вдруг. Я конечно, мало спрашивал на форумах, больше читал. И тоже иногда у меня возникала мысль "О чем вы говорите!" .... Ну поломаюсь чуть, для приличия, да и соглашаюсь... :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 13:54 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
да, сервис получает данные из базы, динамически. сервис один раз написан - и все, его не трогают, только перезапускают чтобы новые данные подхватил. необходима максимальная гибкость. соответственно, нагрузка будет большая и чем меньше размер программы тем лучше. т.е в прога в цикле должна уметь читать данные с портов. и да. порты могут меняться, может меняться оборудование и могут меняться цифры. вполне реально ситуация com1, com15 и com 45 на одном серваке и com2, com3, com 4 на другом, причем данные должны распарсиватьяс по разному в зависимости от полученных данных с сервера ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 13:56 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
des1roerо чем вы говорите? вы действительно для каждого компорта создаете своего слушателя? Боюсь вас удивить - но современная мода программирования создает "своего слушателя" практически для каждой кнопки на окне. В WPF например, паттерн Command.... Я даже начинаю догадываться, что именно вы называете "динамическим" и почему вы считате предложенную вам коллекцию "ручным" способом.... :-/ :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 13:58 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
может хоть подскажете где эмулятор ком порта взять? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 13:58 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
может я чего то не понимаю. но вот пример в начале статьи - это один слушатель по вашему? по моему это один слушатель ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 14:00 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
des1roer, Ну а мы вам о чем? Расскажите, что вы подумали, раз несогласны. А мы вам с позиции своего опыта (ну какой уж есть) развеем ваши опасения по поводу производительности и "размера программы". :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 14:02 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
des1roerможет я чего то не понимаю. но вот пример в начале статьи - это один слушатель по вашему? по моему это один слушатель да, это один слушатель. Он коряво получает настройки, неоптимально инициализируется (каждый раз создается обьект, который вовсе не протух с предыдущего использования), и рискованно вызывается. Всех достоинств - что он один. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 14:05 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
так вот читаю про эмулятор : Возможность создания до 255 виртуальных COM-портов; т.е. вы мне предлагаете создать 255 слушателей на каждый компорт? даже если оптимизировать мое "творение", то чето много быдлокода получается ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 14:22 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
des1roerтак вот читаю про эмулятор : Возможность создания до 255 виртуальных COM-портов; т.е. вы мне предлагаете создать 255 слушателей на каждый компорт? даже если оптимизировать мое "творение", то чето много быдлокода получается А я догадался, что вы не знаете, как использовать такую конструкцию, как класс... :-) Я вам сейчас солюшен накидаю - а вы уже доводите до ума. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 15:21 |
|
Com port работа с несколькими
|
|||
---|---|---|---|
#18+
Код: c# 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. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115.
Солюшен не обязательно посылать, у вас же сервис, а не винформы ... Я оставляю на вашей совести доступ в базу - тоже не все айс, но это можно потом. и получении данных - если вы там пишете в базу, то надо открывать новое соединение - евент ведь вызывается в другом потоке. Если диалоговое окно - ни в коем случае, тем более сервису не положено окнами кидаться. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.06.2014, 16:17 |
|
|
start [/forum/topic.php?fid=20&msg=38666349&tid=1402505]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
58ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 170ms |
0 / 0 |