Hur skicka strängar via ASCII?
-
- Inlägg: 1409
- Blev medlem: 29 januari 2011, 21:06:30
- Ort: Lapplandet
Re: Hur skicka strängar via ASCII?
> Ja. 255. Skulle jag skicka 256 så blir det 0 igen.
Ja det stämmer. Anledningen till att 256 blir 0 är att 256 är 100000000 binärt (9 bitar), och när det "nerkonverteras" till 8 bitar faller 1:an bort och kvar blir (0000000)0.
> Med andra ord så har uint8 8 stycken 0:or eller 8 stycken 1:or, där en bit är antingen sant eller falskt.
Nä, alla bitar behöver inte ha samma värde.
Ja det stämmer. Anledningen till att 256 blir 0 är att 256 är 100000000 binärt (9 bitar), och när det "nerkonverteras" till 8 bitar faller 1:an bort och kvar blir (0000000)0.
> Med andra ord så har uint8 8 stycken 0:or eller 8 stycken 1:or, där en bit är antingen sant eller falskt.
Nä, alla bitar behöver inte ha samma värde.
Re: Hur skicka strängar via ASCII?
Som Mr Andersson sa... Att göra saker utan att förstå varför är inte direkt det optimala sättet.Al_Bundy skrev: Som jag sa!Mr Andersson skrev:> Jag brukar inte bry mig så mycket vad som egentligen händer.
Och det är väl där problemet ligger.
- SeniorLemuren
- Inlägg: 8426
- Blev medlem: 26 maj 2009, 12:20:37
- Ort: Kristinehamn
Re: Hur skicka strängar via ASCII?
Är det kanske dags nu att hugga bort svansen från trollet nu också.Al_Bundy skrev:Jag brukar inte bry mig så mycket vad som egentligen händer. När jag ser att decimaltalet försvinner när float -> int så accepterar jag att den bara hugger bort "svansen".

Re: Hur skicka strängar via ASCII?
Alltså, trådar skapade av Mr "four-touchdowns-in-one-game" är bland forumets bästa.
Äkta skaparglädje och experimentlusta.
Full fart, testa, prova, skit i detaljerna, kör vidare, fråga nån hur man gör, fan vad hände nu,
, ähh jag provar så här i stället.
På nåt sätt känner jag igen mig, och jag antar fler här på EF gör det, att det var ungefär så man själv började en gång i tiden.
Fortsätt du och experimentera vidare

Äkta skaparglädje och experimentlusta.
Full fart, testa, prova, skit i detaljerna, kör vidare, fråga nån hur man gör, fan vad hände nu,


På nåt sätt känner jag igen mig, och jag antar fler här på EF gör det, att det var ungefär så man själv började en gång i tiden.
Fortsätt du och experimentera vidare

Re: Hur skicka strängar via ASCII?
Jag har lite funderingar!
När jag skickar över mySerial.write(50); från en arduino till en annan arduino som läser det som Serial.print(mySerial.read()); så får jag värdet 50. Det verkar vara allt i sin ordning då.
Men när jag skickar över värdet 50 från en arduino med mySerial.write(50); till en annan arduino som tar emot det och skickar det sedan till min dator där jag direkt läser av det via Arduinos Monitor, då ser jag talet 2, alltså ASCII tecknet. Jag använder inte Serial.print() för det finns inte tillgängligt i Simulink då man bara ska hantera signaler.
Alltså:
Programmerad arduino mySerial.write(50); -> Simulinkprogrammerad Arduino tar emot -> Simulinkprogrammerad Arduino skickar det till USB porten -> Arduino IDE's Monitorfunktion läser av det som ASCII tecknet 2.
Då är min fråga: Om Simulink lagrar dessa i en variabel istället för att skicka vidare till USB porten, skulle då denna variabel vara 2 eller 50?
När jag skickar över mySerial.write(50); från en arduino till en annan arduino som läser det som Serial.print(mySerial.read()); så får jag värdet 50. Det verkar vara allt i sin ordning då.
Men när jag skickar över värdet 50 från en arduino med mySerial.write(50); till en annan arduino som tar emot det och skickar det sedan till min dator där jag direkt läser av det via Arduinos Monitor, då ser jag talet 2, alltså ASCII tecknet. Jag använder inte Serial.print() för det finns inte tillgängligt i Simulink då man bara ska hantera signaler.
Alltså:
Programmerad arduino mySerial.write(50); -> Simulinkprogrammerad Arduino tar emot -> Simulinkprogrammerad Arduino skickar det till USB porten -> Arduino IDE's Monitorfunktion läser av det som ASCII tecknet 2.
Då är min fråga: Om Simulink lagrar dessa i en variabel istället för att skicka vidare till USB porten, skulle då denna variabel vara 2 eller 50?
Senast redigerad av Al_Bundy 13 februari 2015, 19:35:00, redigerad totalt 1 gång.
Re: Hur skicka strängar via ASCII?
Learning by doing. Hört talas som det?bit96 skrev:Alltså, trådar skapade av Mr "four-touchdowns-in-one-game" är bland forumets bästa.![]()
Äkta skaparglädje och experimentlusta.
Full fart, testa, prova, skit i detaljerna, kör vidare, fråga nån hur man gör, fan vad hände nu,, ähh jag provar så här i stället.
![]()
På nåt sätt känner jag igen mig, och jag antar fler här på EF gör det, att det var ungefär så man själv började en gång i tiden.
Fortsätt du och experimentera vidare
Jag tror ingen har lärt sig igenom att bara läsa massivs med böcker. I så fall så skulle en lärare inte behöva rätta tentor.
Du skapar ju kunskap igenom att relatera till något som har hänt.
Dessutom vet jag att du har bränt massvis med elektroniska komponenter under din tid, utan att tänkt dig för.
Re: Hur skicka strängar via ASCII?
Som scout borde jag ju propagera för Learning by doing, problemet är att Learning by doing wrong är en oerhört ineffektiv metod för att lära sig.
Re: Hur skicka strängar via ASCII?
Men då kör du inte ascii som du påstår i trådstarten, utan då kör du binärt.Al_Bundy skrev:Hängde inte med.
Jag skickar 65 och när jag tar Serial.println(mySerial.read()); så får jag fram vad mySerial.read() är för något.
Tänk att jag har två stycken arduinos. Ena är programmerad med Simulink där jag skickar talet 65 ut ur TX/RX gångarna och sedan till en annan Arduino som är programmerad med C.
Dela med 256 istället, så slösar du inte utrymme.Al_Bundy skrev:Om jag har talet 65.66 så måste jag dela upp 65 och 66 i två delar. 66 delar jag med 100 och sedan addera med 65.
Du måste förstå att du skickar alltid talet 50, serielänken kan skicka alla tal som ryms inom en uint8, d.v.s. 0-255.Al_Bundy skrev:Jag har lite funderingar!
När jag skickar över mySerial.write(50); från en arduino till en annan arduino som läser det som Serial.print(mySerial.read()); så får jag värdet 50. Det verkar vara allt i sin ordning då.
Men när jag skickar över värdet 50 från en arduino med mySerial.write(50); till en annan arduino som tar emot det och skickar det sedan till min dator där jag direkt läser av det via Arduinos Monitor, då ser jag talet 2, alltså ASCII tecknet. Jag använder inte Serial.print() för det finns inte tillgängligt i Simulink då man bara ska hantera signaler.
Alltså:
Programmerad arduino mySerial.write(50); -> Simulinkprogrammerad Arduino tar emot -> Simulinkprogrammerad Arduino skickar det till USB porten -> Arduino IDE's Monitorfunktion läser av det som ASCII tecknet 2.
Då är min fråga: Om Simulink lagrar dessa i en variabel istället för att skicka vidare till USB porten, skulle då denna variabel vara 2 eller 50?
Det normala (men inte enda) sättet att använda en serieport på är dock att skicka skrivbar text. När du tittar på skärmen och ser det som skickats så har datorn tittat på ställe 50 i en tabell och hittat en bild av hur siffran 2 ser ut, och kopierat det ur tabellen fram till skärmminnet. Att 2 är en siffra är bara ett sammanträffande.
För att det ska stå 50 på skärmen i ett vanligt terminalprogram så måste du alltså skicka först 53 (tecknet 5) och sen 48 (tecknet 0) efter varandra. Det är detta som print fixar till skillnad från write...
Re: Hur skicka strängar via ASCII?
Nu vet jag inte hur Simulink ska läsa värderna av mySerial.write(50); och mySerial.write(48); direkt efter. Men det blir nog bra som du säger.
Idag har jag lärt mig grunderna i kommunikation mellan blockprogrammerad AVR och textprogrammerad AVR
Nu gäller det bara för mig att göra ett subsystem för alla dessa block
Idag har jag lärt mig grunderna i kommunikation mellan blockprogrammerad AVR och textprogrammerad AVR

Nu gäller det bara för mig att göra ett subsystem för alla dessa block

Re: Hur skicka strängar via ASCII?
Naturligtvis har jag eldat komponenter och värre än så.Al_Bundy skrev:Learning by doing. Hört talas som det?bit96 skrev:Alltså, trådar skapade av Mr "four-touchdowns-in-one-game" är bland forumets bästa.![]()
Äkta skaparglädje och experimentlusta.
Full fart, testa, prova, skit i detaljerna, kör vidare, fråga nån hur man gör, fan vad hände nu,, ähh jag provar så här i stället.
![]()
På nåt sätt känner jag igen mig, och jag antar fler här på EF gör det, att det var ungefär så man själv började en gång i tiden.
Fortsätt du och experimentera vidare
Jag tror ingen har lärt sig igenom att bara läsa massivs med böcker. I så fall så skulle en lärare inte behöva rätta tentor.
Du skapar ju kunskap igenom att relatera till något som har hänt.
Dessutom vet jag att du har bränt massvis med elektroniska komponenter under din tid, utan att tänkt dig för.

Numer står brandsläckare utplacerade här och där. Fast det var i ungdomen de hade behövts.

Jag menar alltså vad jag skrev, helt uppriktigt. Jag är inte negativ på något sätt, ifall nån nu någon tolkade det så.
Jag uppmuntrar verkligen din experimentlusta.

Re: Hur skicka strängar via ASCII?
för mycket text i den här tråden för att jag ska orka förstå alla detaljer.
Men, AlBundy, vad är det som ska kommuniceras?
Du har två apparater A och B, och A ska skicka data till B:
(A) ---------(data)-----------> (B)
Min fråga:
Vad för data har (A) , är det en float, t.ex. 123.45?
Vad för data ska (B) helst ha för att kunna tolka det?
Ska det skrivas direkt på skärmen (alltså ASCII tecknen 1 2 3 . 4 5)
eller vill den också ha ett float (123.45) att t.ex. kunna göra beräkningar med...?
Men, AlBundy, vad är det som ska kommuniceras?
Du har två apparater A och B, och A ska skicka data till B:
(A) ---------(data)-----------> (B)
Min fråga:
Vad för data har (A) , är det en float, t.ex. 123.45?
Vad för data ska (B) helst ha för att kunna tolka det?
Ska det skrivas direkt på skärmen (alltså ASCII tecknen 1 2 3 . 4 5)
eller vill den också ha ett float (123.45) att t.ex. kunna göra beräkningar med...?
Re: Hur skicka strängar via ASCII?
kan ngn bevisa för mig att du har felSeniorLemuren skrev:Är det kanske dags nu att hugga bort svansen från trollet nu också.Al_Bundy skrev:Jag brukar inte bry mig så mycket vad som egentligen händer. När jag ser att decimaltalet försvinner när float -> int så accepterar jag att den bara hugger bort "svansen".

det finns ingen som helst anledning att skicka ascii om det inte är till för en dum display utan beräkningskraft!!
för OM den kan utföra beräkningar, då behöver man absolut inte skicka ASCII då den borde kunna
num2str eller float2str....!"#€%&/ om det nu sitter ngn display som ska användas.
Re: Hur skicka strängar via ASCII?
Den enda anledningen till att skicka (kompaktare) binär data är
för prestanda. Att skicka data "läsbart" har alla andra fördelar så
som t.ex. mycket enklare felsökning genom medhörning på linjen.
Dessutom finns det många olika format för att lagra värden binärt
och det är inte alls säkert att båda ändar använder samma standard.
för prestanda. Att skicka data "läsbart" har alla andra fördelar så
som t.ex. mycket enklare felsökning genom medhörning på linjen.
Dessutom finns det många olika format för att lagra värden binärt
och det är inte alls säkert att båda ändar använder samma standard.
Re: Hur skicka strängar via ASCII?
sodjan: det finns ytterligare ett skäl: okunnighet.
Men för personer som kan överskåda vad de gör har du helt rätt.
Men för personer som kan överskåda vad de gör har du helt rätt.
Re: Hur skicka strängar via ASCII?
Medhörning går iofs att ordna även för binära format, men då behöver man skriva medhörningsprogrammet.
M.v.h. cpt. obvious.
M.v.h. cpt. obvious.