Kommunikation mellan PC - Arduino UNO

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43176
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Kommunikation mellan PC - Arduino UNO

Inlägg av sodjan »

Det talar för att skräptecknen uppstår efter logiken som beräknar pariteten,
annars hade ju även skräptecknen fått rätt paritet. Sen är det ju "bara" en
50/50 sannolikhet att det råkar bli fel paritet och det är ingen garanti att det
alltid kommer att göra det. Det fungerade just i detta fall med den hastigheten.
Var det inte även USB inkluderat i detta? Sannolikt har det något med kopplingen
mellan seriedelarna och USB. Någon initiering eller liknande som åker med. Jag
skulle ändå försöka programmera runt det så att skräptecken hoppas över helt.
Albireo
Inlägg: 73
Blev medlem: 30 november 2019, 00:29:39

Re: Kommunikation mellan PC - Arduino UNO

Inlägg av Albireo »

Har gjort olika test...
Med en baudrate på 115200 har jag inte lyckats "provocera fram" skräptecken.
Men vid en baudrate på 19200 blir det olika "nya" skräptecken (ex. ¿ ) 80-90% av fallen..

Överraskande! (tycker jag)
Rick81
Inlägg: 746
Blev medlem: 30 december 2005, 13:07:09

Re: Kommunikation mellan PC - Arduino UNO

Inlägg av Rick81 »

Nja är det som jag tror så får du lite olika spänningsändringar vid initierering och då kommer ju pariteten stämma i 50% av fallen och beroende på baudrate blir ju paritiet olika på skräptecken så det skulle kunna stämma bra överens med det du beskriver.

Normalt lägger man på sin egen felhantering, ex checksumma och/eller omsändinngar om man har viktig info som måste fram, just för att UART inte är ett robust protokoll. Är det bara en logg spelar inte några skräptecken nån roll.

Behöver du verkligen högre baudrate än 115200?
Albireo
Inlägg: 73
Blev medlem: 30 november 2019, 00:29:39

Re: Kommunikation mellan PC - Arduino UNO

Inlägg av Albireo »

Har inte testat med högre hastigheter än 115200 (behöver inte ha den hastigheten heller).
Men ser ingen nackdel att köra "så fort som möjligt" - om det är stabilt.
Har inte testat någon extern strömkälla utan bara nyttjat USB.
Har bara testat mot en bärbar dator.

Absolut är en mjukvaruhandskakning ett alternativ (men krångligare att hantera)
Känner inte till om hårvaruhandskakning fungerar tillsammans med USB. (RTS/CTS)

Trodde att någon tidigare stött på problem / löst denna typ av USB-kommunikation.
(Även om Arduinon är gjord för att "klara sig själv".)
Användarvisningsbild
sodjan
EF Sponsor
Inlägg: 43176
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping
Kontakt:

Re: Kommunikation mellan PC - Arduino UNO

Inlägg av sodjan »

Alltså... *Någon* form av handskakning mellan applikationerna bör du nog ha.
Du ska/bör inte helt och hållet förlita dig på att kommunikationen är 100% felfri.
Nu så vet jag inte om det har framgått vad kommunikationen har för syfte. Om
det är OK att tappa ett eller annat paket. Och missade/korrupta överföringar
måste skickas om o.s.v. Eller om det är helt passivt och PCn bara lyssnar. O.s.v...

Det finns USB/serie kretsar som tillsammans med rätt drivrutiner emulerar
hårdvaruhandskakningen mellan seriesidan (HW pinnarna) och PCn (olika
status från drivrutinen. Men jag föredrar att lösa det i programvaran så är
man inte beroende av att en viss hårdvarulösning finns på plats.
Användarvisningsbild
jesse
Inlägg: 9234
Blev medlem: 10 september 2007, 12:03:55
Ort: Alingsås

Re: Kommunikation mellan PC - Arduino UNO

Inlägg av jesse »

Albireo skrev: 27 december 2019, 01:40:35Har försökt med följande .: (men misslyckats)
a) Tömma seriebufferten vid uppstart av programmet i Arduinon. (kanske gjort på fel sätt?)
b) Filtrera bort alla oönskade tecken. (svårt - ändras beroende på t.ex. baudrate)
c) Lade in fördröjningar (osäkert vilket moment som ska fördröjas)
d) Filtrera bort slasktecken med Autohotkey (inte optimalt, för jag planerar ett annat datautbyte mellan PC / Arduino, än att returnera det som skickas.)
e) Gjorde även ett försök att se datat från PC:n på en LCD-display (16x2 I2C) - men misslyckades få "läsligt" resultat.
Jag skulle låta PC:n skicka t.ex. ett dollar-tecken som start-tecken före rubriken.

Arduinon ska då läsa av serieporten efter tecken utan att returnera dem ända tills den hittar dollar-tecknet. Då går den vidare till den funktion som kommunicerar "på riktigt".

Detta funkar dock bara en gång - då Arduinin startar upp. Om den redan är igång och det kommer in slasktecken så finns det ju inget skydd.
Användarvisningsbild
Icecap
Inlägg: 26136
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Kommunikation mellan PC - Arduino UNO

Inlägg av Icecap »

Om det är automatisk dataöverföring i någon förm som behövs "måste" det finnas någon form av blockdefinition.

Tanken är att den ska klara av att ledningen rycks ut o sätts tillbaka på valfria tidpunkter utan att halva datapaket används.

Jag använder oftast STX och ETX men man kan även ha en paus (t.ex. 3+ bytes paus) i dataströmmen som markering.

Är det klartext inmatning använder jag CR som trigger (o struntar i LF).
Är det dator-till-dator bakar jag in checksum, meddelandelängd osv.

INGEN kommunikation mellan två (eller fler) enheter kan antas gå felfritt till 100%!
Användarvisningsbild
Lennart Aspenryd
Tidigare Lasp
Inlägg: 12607
Blev medlem: 1 juli 2011, 19:09:09
Ort: Helsingborg

Re: Kommunikation mellan PC - Arduino UNO

Inlägg av Lennart Aspenryd »

Hej Gubbar Noterar ni inte att det nya SEF ofta lockar fram antika trådar!
Men jag tycker att det är kul att en slik tråd lever upp igen, det är ju nästan dagsaktuella problem.
Vad jag reagerade på var datumet på inläggen före sodjan och Icecap lille julafton och julafton, vad har jag missat? ;-)

Edit skall vara jesse och Icecap! sodjan svarade precis före nyår.
hummel
Inlägg: 2267
Blev medlem: 28 november 2009, 10:40:52
Ort: Stockholm

Re: Kommunikation mellan PC - Arduino UNO

Inlägg av hummel »

TS har inte varit aktiv på forumet på ett halvår.:-)
Skriv svar