Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
tiipla
HV vaatleja
liitunud: 17.12.2013
|
17.12.2013 18:17:45
Serial pordist datastringi lugemine C# User Interface jaoks Windowsis |
|
|
Kas siin liigub keegi kes oleks antud teemaga süvitsi kursis? Meie meeskonnal on programmikood olemas, mis loeb (USB emuleeritud) serial pordist küsimise peale stringi ning tegeleb selle edasise töötlemisega. Kahjuks jookseb see üsna tihti kokku väljastades eri kohtades veateated kuna string jääb kas lühikeseks või toimub reavahetus (UI aknas mis näitab väljaloetud stringi) keset stringi lugemist. Viga tekib enne kui andmed jõuavad nö. oma programmeeritud puhvrisse.
Kui keegi suudaks/sooviks antud küsimuses aidata viga/lahendust leida võiks võtta ühendust meilil tiit at adek.ee (ilma tühikuteta)
Huvi korral saan siia ka koodijupi kopida; ise ei ole progeja vaid projektijuht, seega vabandan võimalike ebatäpsuste pärast.
|
|
tagasi üles |
|
 |
Mnator
HV Guru
liitunud: 18.10.2007
|
17.12.2013 18:51:21
|
|
|
Tänapäeval on siiski veel ehtsa com pordiga arvuteid saada. Soovitan soojalt neid kasutada aga mitte usb-emulaatoriga jännata.
Ja töövahendusfoorum on allpool.
|
|
Kommentaarid: 1 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
1 |
|
tagasi üles |
|
 |
tiipla
HV vaatleja
liitunud: 17.12.2013
|
17.12.2013 19:06:36
|
|
|
Vahet pole, töötab sisuliselt sama moodi nii emuleeritud kui ka otsese RS232 pordi korral. Asi peab stabiilselt toimima igal juhul
|
|
tagasi üles |
|
 |
Mnator
HV Guru
liitunud: 18.10.2007
|
17.12.2013 19:30:40
|
|
|
Kui muud nõksud enam ei aita, siis võta kiirus alla.
|
|
Kommentaarid: 1 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
1 |
|
tagasi üles |
|
 |
napoleon
Unknown virus

liitunud: 08.12.2008
|
17.12.2013 23:16:09
|
|
|
Võibolla pole probleem üldse serial pordi spetsiifiline, stringi lugedes peab alati arvestama, et saad kätte mingi suvalise tükki mitte ridahaaval. Seda isegi siis, kui protokoll on selline, et saadetakse ainult üks rida ja enne vastuse saamist muud ei saadeta.
Vahel võib jama olla ka windowsi IO puhvritega, proovi need välja lülitada. Omal ajal C/C++-ga sai seda pordist lugemist ikka tehtud ja ei meenu küll, et sellega suuremat jama oleks olnud. Aga see oli muidugi peamiselt winXP ja vanemata windowsitega, võibolla on uuematel mingid iseärasused kuigi väga ei usu, et serial pordi osa kapitaalselt muutunud on.
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
60 |
|
tagasi üles |
|
 |
Mnator
HV Guru
liitunud: 18.10.2007
|
18.12.2013 09:13:18
|
|
|
Kapitaalselt muutunud pole, kontrollerikivid on samad mis varem, on kasvanud tarkvaraline vahekiht ja sellevõrra mõnikord vigu raskem jälitada.
|
|
Kommentaarid: 1 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
1 |
|
tagasi üles |
|
 |
tiipla
HV vaatleja
liitunud: 17.12.2013
|
18.12.2013 10:51:51
|
|
|
Aastate eest oli asi lahendatud delphis ja probleeme polnud; nüüd aga C#/Visual Studiole üle minnes on jamad tekkinud; ja ilmselt tõesti selles mainitud "tarkvaralises vahekihis" ja olekski vaja seal lähemalt tuhnida.
|
|
tagasi üles |
|
 |
Mnator
HV Guru
liitunud: 18.10.2007
|
18.12.2013 11:17:53
|
|
|
Teed katsetusteks vajadusel eraldi programmi ja ajad järge, et kus sul viga tekib.
|
|
Kommentaarid: 1 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
1 |
|
tagasi üles |
|
 |
i8080
Kreisi kasutaja

liitunud: 15.03.2002
|
19.12.2013 00:23:28
|
|
|
kui kasutad System.IO.Ports.Serialport siis sellega on mingi anomaalia minu arust.
aga ma ise pole sellesse lõpuni süvenenud, kuna minu puhul viskas kopa ette see, et 115000baud (umbes 14kilobaiti sekundis) püsiva andmevboo korral oli korraliku masina CPU load 11-30% ja Atom prose korral üle 50% ja sealjuures mingi 1-10% baite läks suvaliselt kaduma.
võib olla oli vigane näide mida kasutasin (erinevad masinad ja riistvara probleem ei saanud seega olla)
http://www.codeproject.com/Tips/361285/Serial-Port-Communication
samas seal nagu pole ise midagi paremaks muuta ka kuna
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
|
eventi peale peaks kõik data kohale tulema, aga mul oli alati mingid suvalised baidid vahelt puudu suvalisel ajahetkel.
ja siis ise kasutasin kunagist win32api näidet tty.c ja sellest tehtud dll ja unmanaged code wrap.
ja toimib 100% ja priose kasutus on suht 0% ka megabitise trafficu korral ja midagi ei lähe vahelt kaduma.
winapi tty.c mingi netist leitud variant on muidu selline
http://lynx.uio.no/jon/gnokii-0.3.3_pre5/win32/winserial.c
|
|
Kommentaarid: 169 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
151 |
|
tagasi üles |
|
 |
tiipla
HV vaatleja
liitunud: 17.12.2013
|
19.12.2013 14:09:22
|
|
|
jah just seesama koodirida
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) |
on ka meil koodis. Ma saan aru, et asendasid pordi lugemise mingi vana (1999 a ) lahendusega. Rumal küsimus aga kuidas see haakub muus osas C# võimalusi kasutava programmiga, töötab ka win7/8 all korralikult?
|
|
tagasi üles |
|
 |
Mnator
HV Guru
liitunud: 18.10.2007
|
19.12.2013 14:17:53
|
|
|
Haakub seni kuni kasutatavad teegid on toetatud/lubatute nimekirjas. 7 ja 8 puhul veel on.
|
|
Kommentaarid: 1 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
1 |
|
tagasi üles |
|
 |
i8080
Kreisi kasutaja

liitunud: 15.03.2002
|
|
Kommentaarid: 169 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
151 |
|
tagasi üles |
|
 |
napoleon
Unknown virus

liitunud: 08.12.2008
|
20.12.2013 14:17:56
|
|
|
Kui C# sellega tõesti hakkama ei saa(vähetõenäoline, kuid mitte 100% välistatud), siis üks võimalik workaround oleks serial pordiga toimetamiseks C++-s DLL kirjutada ja selle funktsiooni C#-s välja kutsuda.
|
|
Kommentaarid: 77 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
60 |
|
tagasi üles |
|
 |
|