Diskuze: DigitalPinUpdated
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Tvůrce
Zobrazeno 15 zpráv z 15.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Moment - arduino + C#, TextBox?
Něco mi uniklo? Co to je za projekt?
Osobně taky neznám Arduino+C# jenom Wiring, ale zjevně je problém v tom asynchronním volání metody MyDigitalPinUpdated. Zkus ji použít bez toho async.
Osobně si nedokážu dost dobře představit jak to ten AVR (pokud to tedy je na AVR) zpracovává když ten program v něm běží ve smyčce. Podle čeho se rozhoduje kdy si zavolá obslužnou metodu která přečte vstup a vypálí něco jako událost a kdy dá přednost jiným úkolům
ve Wiringu to je:
int buttonState = 0; // variable for reading the pushbutton status
void setup()
{
// initialize the pushbutton pin as an input:
pinMode(6, INPUT);
}
void loop()
{
// read the state of the pushbutton value:
buttonState = digitalRead(6);
// check if the pushbutton is pressed.
// if it is, the buttonState is HIGH:
if (buttonState == HIGH)
{
// Fire Method after pressed button
Test();
}
//any
}
jedná se vlastně o sériovou komunikaci s arduinem na tomto principu.
Taky si myslím, že problém bude v tý "asynchronizaci". Ale chová se to
prostě takto zvláštně. Osobně bych čekal, že pokud tlačítko zmáčknu
jednou a počkám dostatečně dlouhou dobu, tak se obsluha té události
zavolá. Ale ta se vždy zavolá až po tom třetím....atd zmáčknutí
To by jich odpálilo nejspíše více za sebou.
Dalo by se to ošetřit například kondenzátorem a nebo sledováním stavu
vstupu po nějakou
dobu a uděláním průměru vzorku. Ale to se pořád bavíme o desce Arduina a
ne o druhém konci seriové linky na kterou věší ty funkce.
Buď je problém v Arduinu ten že jeho program hromadí stisky do buferu a odesílá je po jeho zaplnění najednou, a nebo to samé dělá na druhém konci jeho program při vyčítání ze seriové linky.
Ještě mě napadlo zda máš shodně nastavenou seriovou linku pro přenos. Jak v Arduinu tak na PC ?
Nainstaluj si (pokud nemáš) "ComSpy ":http://www.gollner.cz/index.php?… pověs to na příslušný com port a sleduj co se děje po stisku tlačítka - pokud arduino hned něco pošle, pak je problém v aplikaci s reakcí na přerušení od com portu.
s těmi možná bude problém taky, ale to mě v tomto případě
netrápí.
A tím spíš by na to měla aplikace reagovat ne? Když by jich přišlo víc.
Tohle vypadá na přesně stejnej problém. Díky. Doma si to pořádně pročtu a zkusím z toho něco vyzkoumat jestli to pomůže.
Určitě zkusím. Ale dioda Tx vždy při stisknutí i puštění tlačítka blikne, takže předpokládám, že arduino něco posílá.
Hm, takže to mají vymakané tak, že se hlídá i uvolnění
tlačítka.
Nevím, neznám to a tady na fóru asi nikdo, ale evidentně to čeká buď
nějaký znak, který přijde s tou 16. zprávou, nebo kdoví co, ale vypadá to
tak, že na to používáš špatnou metodu , která je ale ta správná, to ví
snad jen autor toho projektu.
Zobrazeno 15 zpráv z 15.