|
потоки в C#
|
|||
---|---|---|---|
#18+
дело такое - опрашиваю ком порты. есть функция и класс, отвечающие за разные методы. приходится ставить thread.sleep() чтобы получить значение с ком порта, потому что сразу они не приходят. так вот - все это дело крутится в таймере. пытаюсь выключить таймер - он мне ругается. как остановить thread.sleep по клику? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 07:15 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
des1roerдело такое - опрашиваю ком порты. есть функция и класс, отвечающие за разные методы. приходится ставить thread.sleep() чтобы получить значение с ком порта, потому что сразу они не приходят. так вот - все это дело крутится в таймере. пытаюсь выключить таймер - он мне ругается. как остановить thread.sleep по клику?Зачем таймер? У компорта есть события. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 07:23 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
и ? мне нужно поинтервально опрашивать его ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 07:30 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
может можно узнать состояние потока и запустить его не ожидая слип ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 07:31 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
des1roerи ? мне нужно поинтервально опрашивать егоОбычно поинтервально делают запрос+ответ. А если девайс постоянно шлёт данные в порт, без запроса, то лучше принимать данные по событию. авторприходится ставить thread.sleep() чтобы получить значение с ком порта, потому что сразу они не приходят.Этот момент проясни, обычно это решается через read timeout в порте. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 07:53 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
readtimeout не помогает. пробовал _COM.ReadTimeout = timeout; _COM.WriteTimeout = timeout; да идет запрос-ответ. в общем, если не привязываться к технологии возможно прибить слип? хотя, может я таймаут неправильно выставил? но вот сколько не менял - разницы ровным счетом никакой ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 08:03 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
des1roer, Тайм аут нужно задавать перед открытием порта. В милисекундах ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 08:19 |
|
потоки в C#
|
|||
---|---|---|---|
#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. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 08:22 |
|
потоки в C#
|
|||
---|---|---|---|
#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.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 08:23 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
Не вижу, где у тебя чтение порта (не по событию). Назначение тайм аута - выбить эксепшн, если ты обратился к методу read, а он в течении времени не выдал данные ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 08:56 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
Read existing под это дело не пдходит тк нечего читать - и тайм аут не срабатывает ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 09:00 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
нет. также дергает первые несколько символов. попробовал Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 09:43 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
может есть способ проверить есть ли еще данные которые нужно принять ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 09:44 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
А ты не знаешь, сколько данных должно прийти в ответ на запрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 10:16 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
des1roerнет. также дергает первые несколько символов. попробовал Код: c# 1. 2.
ну так ты тут считываешь 16 байт. Если придет меньше - вывалится exeption после таймаута. Если больше - нужно считывать дальше ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 10:19 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
Ты ж сказал, что знаешь, сколько должно прийти байт. С чего их должно быть больше? Если все-таки не знаешь, то лучше подход с событием применять. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 10:24 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
ну так че мне цикл делать? как понять то сколько байт пришло? ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 10:30 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
des1roer, попробуй обратиться к свойству _port.BytesToRead, может поможет ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 10:33 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
чет не вникну Код: c# 1. 2. 3. 4. 5. 6.
приходит сначала полчисла и потом полчисла ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 10:59 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
по сути, если хранить все что пришло на тике-1 и записывать это на тике , то это и будет число. оно явно должно успеть придти ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 11:09 |
|
потоки в C#
|
|||
---|---|---|---|
#18+
des1roerну так че мне цикл делать? как понять то сколько байт пришло?Это должно решаться на уровне протокола передачи данных. В протоколах обычно или сначала передаётся размер пакета, или известен символ завершения пакета. ... |
|||
:
Нравится:
Не нравится:
|
|||
20.06.2014, 12:00 |
|
|
start [/forum/topic.php?fid=20&msg=38675054&tid=1402711]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
others: | 315ms |
total: | 442ms |
0 / 0 |