Avatar billede Daniel.E Praktikant
12. september 2004 - 12:31 Der er 33 kommentarer og
1 løsning

comm port initering

Jeg har et spørgsmål som jeg har undret mig over i et stykke tid nu.  Hvorfor skal man starte Hyperterminalen først før at dette virker ??


system("mode com1: BAUD=$baud PARITY=$parity data=$data stop=$stop xon=$xon octs=$octs odsr=$odsr idsr=$idsr dtr=$dtr rts=$rts");

Der må være en skjult opsætning eller noget som den gør, som man ikke kan se....
Avatar billede Daniel.E Praktikant
12. september 2004 - 18:57 #1
arne_v eller bertelbrander i må da vide hvorfor... I hvor viden spørger til jer.. :)
Avatar billede arne_v Ekspert
12. september 2004 - 20:05 #2
Jeg læser kun PHP kategorien tilfældigt - og jeg kunne sagtens tænke mig at det var
det samme for Bertel.

Men jeg formoder at PHP system mapper direkte til C stdlib.h system (bare med
en lidt nemmere syntax for at formatere strengen).
Avatar billede arne_v Ekspert
12. september 2004 - 20:06 #3
Hvad sker der helt præcist hvis HT er startet og hvis HT ikke er startet ?
Avatar billede bertelbrander Novice
12. september 2004 - 21:01 #4
Jeg ved hvordan man snakker med com-porten i C/C++ men jeg aner ikke noget om PHP.

Hvad sker der og hvad synes du at der skulle ske?
Avatar billede Daniel.E Praktikant
12. september 2004 - 23:56 #5
arne_v

Hvis jeg starter mit PHP script uden at have kørt HT først, så kan jeg ikke modtage date fra mit comm device, altså ingen forbindelse.

Hvis jeg starter HT først, vælger den givne comm port, og lukker den med det samme bagefter, og så kører mit PHP script, så kan jeg modtage data, og opnå kontakt med comm device.

Totalt underligt, men af en eller anden grund har HT en hemmelig opsætning.  Men nu er det jo også Vinduer, og det kommer jo fra Mikroblød, som selve Bill Port står for. hehe
Avatar billede Daniel.E Praktikant
12. september 2004 - 23:57 #6
Jeg regnede heller ikke med at I ville kigge under PHP. :)  Det var derfor jeg skrev en note til dig arne_v i et andet spørgsmål.  :)
Avatar billede bertelbrander Novice
13. september 2004 - 00:03 #7
Du kunne prøve at køre en "mode com1:" kommando i en dos prompt før og efter at du har haft hyperterminal startet op og sammenligne disse.
Avatar billede Daniel.E Praktikant
13. september 2004 - 00:05 #8
bertelbrander

Status for device COM1:
-----------------------
    Baud:            9600
    Parity:          None
    Data Bits:      8
    Stop Bits:      1
    Timeout:        ON
    XON/XOFF:        OFF
    CTS handshaking: ON
    DSR handshaking: OFF
    DSR sensitivity: OFF
    DTR circuit:    ON
    RTS circuit:    ON

Jeg får de samme info om jeg køre HT først, eller om jeg bare bruger mit sctipt.
Avatar billede Daniel.E Praktikant
13. september 2004 - 00:05 #9
jeg har haft andre folk på sagen også, og de måtte også give op.  Det er den mystiske HT opsætning. :)
Avatar billede bertelbrander Novice
13. september 2004 - 00:09 #10
Har du prøvet at sætte RTS til HANDSHAKE?
Avatar billede Daniel.E Praktikant
13. september 2004 - 00:10 #11
er det ikke bare at sætte rts=on ??
Avatar billede bertelbrander Novice
13. september 2004 - 00:11 #12
Ellers kunne du lave et lille C/C++ program (/driver/dll) til at modtage, og føde data til dit PHP program.
Avatar billede bertelbrander Novice
13. september 2004 - 00:13 #13
Måske ?
Avatar billede Daniel.E Praktikant
13. september 2004 - 00:17 #14
det kunne jeg....men har desværre ikke tiden til det, da jeg arbejder til svendeprøve....og det skal være i PHP....det er for sent at ændre det nu...
men jeg vil meget gerne lave et program i C/C++ som kan kummunikere med et comm device...men bare ikke før om 3 ugers tid.
Avatar billede Daniel.E Praktikant
13. september 2004 - 00:18 #15
Hvis jeg husker rigtigt så har jeg noget kode liggende til at klare noget comm snak...men det er old gammelt...
Avatar billede bertelbrander Novice
13. september 2004 - 00:20 #16
Jeg har et lille program til at ligge på min hjemmeside. Det sender et par kommandoer og modtager svar.
Avatar billede Daniel.E Praktikant
13. september 2004 - 00:23 #17
ok...midgård....ja, den side kender jeg godt :)  har set lidt på dine programmere... :)
Avatar billede Daniel.E Praktikant
13. september 2004 - 00:24 #18
men jeg ved ik rigtig hva jeg skal gøre med dette lille problem.. DEt er ikke noget vidre problem bare lige at starte HT og så lukke den igen, men det giver nu bedre bruger venlighed hvis man ikke skal.
Avatar billede bertelbrander Novice
13. september 2004 - 00:26 #19
Jeg har ikke ret mange andre ideer end at du må prøve dig frem :-(
Der er ikke så mange muligheder for opsætning.
Avatar billede Daniel.E Praktikant
13. september 2004 - 00:29 #20
nej det er nemlig det. :)  Men det går jo nok.  Jeg lader spøgrsmålet være åbent, det kan jo være det er en gut som ved hvad der mangler.
Avatar billede bertelbrander Novice
13. september 2004 - 00:39 #21
Kom til at tænke på: Måske har du en driver/program som "sidder på" com-porten, og som HT smider af?
Avatar billede Daniel.E Praktikant
13. september 2004 - 00:46 #22
hmm....det er det samme på både 98/xp.... jeg har ikke selve startede noget program.
Avatar billede arne_v Ekspert
13. september 2004 - 19:48 #23
Hvad siger i til den her hypotese (jef ved ikke en meter om COM porte):

* windows sætter COM porten til default når dem åbnes af første process

Scenarie 1:
- HT åbner COM porten
- Windows sætter den til default
- PHP spawner
- den spawnede process ændrer settings
- den spawnede process afslutter
- PHP åbner porten
- PHP kommunikerer med porten

Scenarie 2:
- PHP spawner
- den spawnede process åbner porten
- Windows sætter den til default
- den spawnede process ændrer settings
- den spawnede process afslutter
- PHP åbner porten
- Windows sætter den til default
- PHP kommunikerer med porten
Avatar billede arne_v Ekspert
13. september 2004 - 19:57 #24
Hvis det er tilfældet så:
  - laver du en BAT fil som kalder MODE og venter N sekunder
  - starter den med popen
  - åbner COM porten i PHP efter at MODE er kørt men før processen er afsluttet
Avatar billede bertelbrander Novice
13. september 2004 - 20:57 #25
Tja, den teori er lige så god som nogen jeg kunne finde på, så det bør afprøves.

Man kunne også overveje at køre vb2's system kommando to gange, med et lille delay imellem (f.ex. et sekund).
Avatar billede Daniel.E Praktikant
14. september 2004 - 18:07 #26
Jeg har gjodt mig et par forsøg med HT og uden HT.

Her er nogle resultater efter commandoen "mode com1:".

Denne er hvis jeg køre "mode com1" lige efter at have kørt og HT og lukket den ned, ellers kan man ikke, fordi enheden er i brug.

Status for device COM1:
-----------------------
    Baud:            9600
    Parity:          None
    Data Bits:      8
    Stop Bits:      1
    Timeout:        ON
    XON/XOFF:        OFF
    CTS handshaking: ON
    DSR handshaking: OFF
    DSR sensitivity: OFF
    DTR circuit:    ON
    RTS circuit:    HANDSHAKE


Denne er for hvis bare køre mit PHP script med opsætningen i. Ingen start af HT forekommer.

Status for device COM1:
-----------------------
    Baud:            9600
    Parity:          None
    Data Bits:      8
    Stop Bits:      1
    Timeout:        ON
    XON/XOFF:        OFF
    CTS handshaking: ON
    DSR handshaking: OFF
    DSR sensitivity: OFF
    DTR circuit:    ON
    RTS circuit:    ON
Avatar billede Daniel.E Praktikant
14. september 2004 - 18:08 #27
Det tyder meget på at jeg ikke får sat RTS til handshake, og måske skulle ændre Timeout til on.

Men så er det lige, hvilken værdi som repræsentere ordet "handshake"... ?
Avatar billede bertelbrander Novice
14. september 2004 - 20:10 #28
I winbase.h har jeg:

#define RTS_CONTROL_HANDSHAKE 0x02
Avatar billede Daniel.E Praktikant
15. september 2004 - 15:22 #29
den vil ik godtage at jeg skriver rts=2
Avatar billede bertelbrander Novice
15. september 2004 - 20:07 #30
Føjgende virke i en dos prompt:

mode com1: rts=hs
Avatar billede Daniel.E Praktikant
16. september 2004 - 17:33 #31
Status for device COM1:
-----------------------
    Baud:            9600
    Parity:          None
    Data Bits:      8
    Stop Bits:      1
    Timeout:        ON
    XON/XOFF:        OFF
    CTS handshaking: ON
    DSR handshaking: OFF
    DSR sensitivity: OFF
    DTR circuit:    ON
    RTS circuit:    HANDSHAKE

Ok nu er dette ved at stige mig til hovedet..he he

hvis jeg skal lave denne COM opsætnming i DOS consol, fra Windows, hvad skal jeg så skrive ???
Avatar billede Daniel.E Praktikant
28. september 2004 - 22:01 #32
hvis en af jer som deltager i dette spørgsmål, synes at i har gjodt jer fortjent til point, så lig et svar... jeg ved ikke rigtig selv hvordan jeg skal ende dette spørgsmål...
Avatar billede arne_v Ekspert
28. september 2004 - 22:29 #33
hvis du synes at jeg har fortjent nogen

(det er din vurdering ikke min vurdering)
Avatar billede Daniel.E Praktikant
29. september 2004 - 00:11 #34
hej arne.... du har sat et svar, det betyder så at du får nogle..og du manger jo også points....hehe
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester