rs232 mottagare?
Nu har jag inte hängt med i denna topic (skäms!), så det kan redan tagits upp, men RS232-signalen är negativ (någonstans runt -3 - -15V om jag inte missminner mig helt) vid "1" och positiv(+3 - +15V) vid "0". Detta fixar (inverterar och lägger på 0-5V nivå) en MAX232, eller motsvarande, använder du sådan?
Nu ser jag inte vad det är för IC på kretskortet, men är det en MAX232 (eller motsv.) ska den invertera signalen, annars kanske du ska kolla upp vad kretsen på ditt kort gör med signalen (kanske bara omvandlar TTL <-> RS232 utan att invertera?).
Ett sätt är ju att lösa det i mjukvaran, men kanske inte en snygg lösning
Ett sätt är ju att lösa det i mjukvaran, men kanske inte en snygg lösning

Jo asså det STÅR ju MAX232 på kretsen så visst e det en sådan. (Det jag inte va säker på att du mena va om det fanns olika sådana)
Det jag tror e problemet nu e hur jag ska skicka, jag ska sända "C1" HEX enligt databladet..
Ska då få svaret CD eller ED hex
vad ska jag skicka då? &HC1? eller det binära talet?
Sänder jag binärt så vänder den på allt så jag får ett spegelvänt svar.
Vad jag än sänder iväg så får ja fel svar.
/B
Det jag tror e problemet nu e hur jag ska skicka, jag ska sända "C1" HEX enligt databladet..
Ska då få svaret CD eller ED hex
vad ska jag skicka då? &HC1? eller det binära talet?
Sänder jag binärt så vänder den på allt så jag får ett spegelvänt svar.
Vad jag än sänder iväg så får ja fel svar.
/B
Hmm, det här var mysko... de enheter som du ska prata med (är det DS2480, jag skummade igenom några inlägg) vill de ha höga eller låga 1'or resp. 0'or?
Ett sätt är ju att invertera på hårdvarunivå... Ska du använda det där kretskortet du länkade till, i den slutgiltiga produkten, eller används den bara nu när du labbar?, om det senare, det finns isf kanske andra TTL <-> RS232nivåomvandlare som inte inverterar?
Tyvärr kan jag inte hjälpa dig med kodandet i VB, men det borde vara en enkel sak att fixa, för den som kan språket, att göra en rutin som inverterar, eller spegelvänder bitarna (det du föredrar att använda).
Ett sätt är ju att invertera på hårdvarunivå... Ska du använda det där kretskortet du länkade till, i den slutgiltiga produkten, eller används den bara nu när du labbar?, om det senare, det finns isf kanske andra TTL <-> RS232nivåomvandlare som inte inverterar?
Tyvärr kan jag inte hjälpa dig med kodandet i VB, men det borde vara en enkel sak att fixa, för den som kan språket, att göra en rutin som inverterar, eller spegelvänder bitarna (det du föredrar att använda).
Det är en DS2480 jag ska använda och den vet jag inte hur den funkar riktigt, det e ju så jä*la mycket o läsa om den så jag fattar knappt hälften känns det som.
Jag ska ha den till labb. just nu bara så jag får mjukvaran ok.
VB kan jag så det är inte svårt att invertera eller nått.
ska se om det är det som är felet.
/B
Jag ska ha den till labb. just nu bara så jag får mjukvaran ok.
VB kan jag så det är inte svårt att invertera eller nått.
ska se om det är det som är felet.
/B
Ja du, tack för det, tror jag kommer få svårt att få detta iland, börjar kännas hopplöst.
Databladet får jag inget vettigt ur i detta läge...snart lägger jag ner detta om ingen kan bistå me HUR jag ska sända datat.
ska det va HEX, binärt, framlänges, baklänges, inverterat?? VAD?
Börjar bli smått frustrerad....
EDIT: Ur databladet för DS2480:
the DS2480B can translate each character
into eight 1-Wire time slots
Som jag ser det borde det räcka att jag skickar in tex "C1" endast så gör den om det till vad det ska va.
Om jag skickar "C1" när jag "startat om" DS2480 så får jag INGET som svar, om jag stänger ner programmet och kör igen direkt efter så svarar den me "B0"
/B
Databladet får jag inget vettigt ur i detta läge...snart lägger jag ner detta om ingen kan bistå me HUR jag ska sända datat.
ska det va HEX, binärt, framlänges, baklänges, inverterat?? VAD?
Börjar bli smått frustrerad....
EDIT: Ur databladet för DS2480:
the DS2480B can translate each character
into eight 1-Wire time slots
Som jag ser det borde det räcka att jag skickar in tex "C1" endast så gör den om det till vad det ska va.
Om jag skickar "C1" när jag "startat om" DS2480 så får jag INGET som svar, om jag stänger ner programmet och kör igen direkt efter så svarar den me "B0"
/B
Senast redigerad av benring 4 september 2005, 17:36:11, redigerad totalt 1 gång.
Ang. hex vs. binärt (eller decimalt, octalt... osv, osv) är bara till för dig som programmerare, serieporten skickar ändå ut datat bit för bit...precis som den blivit tillsagd (får man hoppas).
Ang. "framlänges" eller "baklänges" (MSB first eller LSB first) måste du kolla upp i databladet..., likaså inverterade nivåer
Edit:
Eng. första sidan i databladet står det:
---
User-Selectable RXD/TXD Polarity
Minimizes Component Count When
Interfacing to 5V Based RS232 Systems or
Directly to UARTs
---
På något sätt ska du alltså kunna välja om den ska vara inverterad eller inte... -beror på vad du kopplar till pin nr 6 (POL).
Ang. "framlänges" eller "baklänges" (MSB first eller LSB first) måste du kolla upp i databladet..., likaså inverterade nivåer
Edit:
Eng. första sidan i databladet står det:
---
User-Selectable RXD/TXD Polarity
Minimizes Component Count When
Interfacing to 5V Based RS232 Systems or
Directly to UARTs
---
På något sätt ska du alltså kunna välja om den ska vara inverterad eller inte... -beror på vad du kopplar till pin nr 6 (POL).
Senast redigerad av Xyzzy 4 september 2005, 17:41:03, redigerad totalt 1 gång.
Men om den skickar datat oavsett som binär form så undrar jag hur jag kan få olika svar beroende på vad jag skickar in.
Borde jag inte få samma svar på "C1" som på "11000001" ??
ja det kan ja tydligen ändra beroende på hur pinnen "POL" på kretsen kopplas.
Vet bara inte vad jag kör, UART (Vad är det?) eller rs232??
EDIT: nyss fick ja "B0" som svar på C1, nu får ja "Àô"....blir fan inte klok på detta....
nu fick ja "B0" igen.
Här e koden jag testar med:
' Använd COM1.
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
'Öppna porten.
MSComm1.PortOpen = True
' Sänd ett kommando
MSComm1.Output = "C1"
' Vänta på att data skickas tillbaka genom COM-porten
Do
DoEvents
buffer$ = buffer$ & MSComm1.Input
Debug.Print buffer$
Loop Until Len(buffer$) = 8
buffer$ = ""
' Stäng serieporten.
MSComm1.PortOpen = False
/B
Borde jag inte få samma svar på "C1" som på "11000001" ??
ja det kan ja tydligen ändra beroende på hur pinnen "POL" på kretsen kopplas.
Vet bara inte vad jag kör, UART (Vad är det?) eller rs232??
EDIT: nyss fick ja "B0" som svar på C1, nu får ja "Àô"....blir fan inte klok på detta....
nu fick ja "B0" igen.
Här e koden jag testar med:
' Använd COM1.
MSComm1.CommPort = 1
MSComm1.Settings = "9600,N,8,1"
MSComm1.InputLen = 0
'Öppna porten.
MSComm1.PortOpen = True
' Sänd ett kommando
MSComm1.Output = "C1"
' Vänta på att data skickas tillbaka genom COM-porten
Do
DoEvents
buffer$ = buffer$ & MSComm1.Input
Debug.Print buffer$
Loop Until Len(buffer$) = 8
buffer$ = ""
' Stäng serieporten.
MSComm1.PortOpen = False
/B
Senast redigerad av benring 4 september 2005, 17:45:47, redigerad totalt 1 gång.
- MadModder
- Co Admin
- Inlägg: 31459
- Blev medlem: 6 september 2003, 13:32:07
- Ort: MadLand (Enköping)
- Kontakt:
Serieporten skickar alltid binärt.
Om du skickar C1 som du gjorde först, kommer det ut 0100001100110001 (bokstaven C och siffran 1, 43 resp 31 hexadecimalt)
Om du skickar C1 hexadecimalt, så kommer det ut 11000001
Och du kan omöjligt få Àô, då de bokstäverna inte fiunns med i hexadecimala systemet. Det är nåt galet med ditt program
[edit]
Du skickar nu strängen "C1" ut till serieporten. Det ska du väl ändå inte göra... Du borde skicka &HC1 väl?
Om du skickar C1 som du gjorde först, kommer det ut 0100001100110001 (bokstaven C och siffran 1, 43 resp 31 hexadecimalt)
Om du skickar C1 hexadecimalt, så kommer det ut 11000001
Och du kan omöjligt få Àô, då de bokstäverna inte fiunns med i hexadecimala systemet. Det är nåt galet med ditt program

[edit]
Du skickar nu strängen "C1" ut till serieporten. Det ska du väl ändå inte göra... Du borde skicka &HC1 väl?
Senast redigerad av MadModder 4 september 2005, 17:48:49, redigerad totalt 2 gånger.