Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

pisanie programów w delphi do rs-232

treker 04 Lis 2006 13:44 3936 20
  • #1 04 Lis 2006 13:44
    treker
    Poziom 25  

    Witam!
    Już od dawna zamierzałem napisać taki program ale nie potrafiłem ale tear zabiore się ostro do pracy tylko potrzebuje pomocy od was:
    1. jaką wtyczke tzreba ściągnąć do delphi jak się nazywa najlepiej link do jakiejś sprawdzonej
    2. Nigdy nie spotakłem się z takim programem jak to zapisać np że gdy dostanie sygnał z procesora (attiny2313 przez max232) o treści 1 to wyświetla mi przypisany do 1 napis który deklaruje w delphi??

    Czyli schenmatycznie:
    mam progra
    attiny wysyła sygnał "1"
    w progu wyświetla mi się tekst " Pomiar został wykonany"


    wiem że można to zrobić w terminalu ale chciałemw prog aby potem np móc wyświetlać jakąś grafe przypisaną do komunikatów od uC lub wysyłać polecenia do uC z PC przyciskając buttony;)

    0 20
  • Pomocny post
    #2 04 Lis 2006 13:48
    zolciak
    Poziom 14  

    comport

    0
  • #3 04 Lis 2006 18:15
    treker
    Poziom 25  

    oki mam ten komponent ale teraz głupia sprawa nie instalowałem nowego komponentu już od bardzo dawna jak to zrobić mam delphi 2005? i oczywiście proszę też o opis jak wykonać ten programik;)

    Dodano po 3 [godziny] 57 [minuty]:

    robię według tego http://www.borland.pl/cgi-bin/tip.exe/showtip?mode=1&id_tip=77
    i mi nie działa dochodzi do końca i nie ma tego komponentu:/ ale i tak najważniejsza jest proźba o wytłumaczenie tego proga;)

    0
  • Pomocny post
    #4 05 Lis 2006 14:04
    zolciak
    Poziom 14  

    Zrób tak jak pisze autor w pliku readme. Ja używam tego komponentu w bcb6 i instaluje sie bez problemu. Co do zasady działania to polecam przejrzeć example. W skrócie:
    wysyłanie : ComPort1->WriteStr("bebebe");
    odbieranie alebo w samym comporcie w zdarzeniu OnRxChar albo w kompnencie równolegle instalowanym o nazwie ComPortPacket w zdarzeniu OnPacket.

    0
  • Pomocny post
    #5 05 Lis 2006 15:47
    mirekk36
    Poziom 42  

    ... jeśli zassałeś sobie ten komponent to masz tam też chyba ze trzy przykładowe programiki - które fajnie pokazują jak się posługiwać w podstawowy sposób tym komponentem, m.inn "ComExample.dpr" . Tam jest przykład odczytywania znaków w metodzie opisanej powyżej przez kolegę.

    Działa bardzo dobrze - właśnie robię oprogramowane w D7 które współpracuje ze sterownikiem własnie na ATTiny2313, podłączonym przez RS232/RS485 do PCta i wszystko jest SUPER ;)

    pozdrówka

    0
  • #6 06 Lis 2006 17:38
    treker
    Poziom 25  

    witam!
    Robie dokładnie jak tu https://www.elektroda.pl/rtvforum/viewtopic.php?t=242927&highlight=
    i mam błąd :/

    Dodano po 23 [minuty]:

    dobra troche pokombinowałem i się zainstalowało ale go nigdzie nie wide na której palecie on jest?

    Dodano po 7 [minuty]:

    niby sie insatluje ale w uses podkreśla że błędn ai że nie może znalexć Cport.dcu

    0
  • Pomocny post
    #7 06 Lis 2006 18:14
    mirekk36
    Poziom 42  

    ... żeby widać było Cport.dcu - musisz sobie ustawić w opcjach i w libararies - ścieżkę do źródeł tego komponentu (tak jak dla wszystkich nowo instalowanych komponentów) ;) pozdrówka

    0
  • #8 07 Lis 2006 07:34
    treker
    Poziom 25  

    :/ jestem jakiś nie kumaty nie wiem gdzie to zrobić w Component nie ma żadnej opcji która otwiera *.cpu
    mam delphi 2005

    0
  • #9 07 Lis 2006 09:43
    mirekk36
    Poziom 42  

    ... ja mam Delphi 7 - tu jest tak, że po zainstalowaniu komponentu, trzeba wejść w menu w:
    Tools, Environment options, Library i kliknąć klawisz Library path. W tym miejscu ustawia się ścieżki poszukiwań dla modułów - plików, które mają być tam poszukiwane podczas kompilacji. Zauważ, że jak kładziesz na formę ten komponent to przy próbie kompilacji do sekcji USES na początku dodaje się CPort. Czyli trzeba wskazać kompilatorowi gdzie znajdują się jego pliki źródłowe, żeby to skompilować - tak jest w przypadku w zasadzie prawie wszystkich komponentów. Niestety nie jestem w stanie dokładnie powiedzieć jak to jest w D2005 ale myślę, że podobnie, co najwyżej opcje mogą się troszkę inaczej nazywać ;) .... ale jeśli masz tyle problemów z tym komponentem akurat (chyba, że masz wogóle problemy ze znajomością Delphi) to zainstaluj sobie dowolny inny - np w jednym z wg mnie najlepszych pakietów (free) w sieci SYNAPSE jest moduł "synaser", trudniejszy i jest tam troszkę więcej pracy żeby się nim posługiwać ale za to daje to niesamowite efekty - w poważniejszych programach to jego wykorzystuję do obsługi portów COM. Jeszcze inny łatwy i przyjemny komponent do COMa to np SerialNG (zapuść google i odrazu go znajdziesz)

    pozdrawiam

    0
  • #10 07 Lis 2006 16:28
    treker
    Poziom 25  

    nie ma takich opcji w delpgi 2005 mam problemy z tym bo dawno już tego delphi nie ruszałem:/ i teraz są problemy:/

    Dodano po 34 [minuty]:

    no dobra niby się zainstalowało w uses nie podkreśla tego ale niemam tego komponentu:/ nie wiem gdzie to dodać:/ ten *.dcu

    0
  • Pomocny post
    #11 07 Lis 2006 20:59
    GrEG0
    Poziom 14  

    Wyprobiuj cos takiego. Oczywiscie to jest tylko przyklad.

    *Inicjacja portu*

    Code:

    hCommFile : THandle;
    DCB: TDCB;
    CommTimeouts : TCommTimeouts;
    Port: String;

     Port:='COM1:';

      hCommFile := CreateFile(PChar(Port),
                              GENERIC_READ or GENERIC_WRITE,
                              0,
                              nil,
                              OPEN_EXISTING,
                              FILE_ATTRIBUTE_NORMAL,
                              0);
      if hCommFile=INVALID_HANDLE_VALUE then
      begin
        ShowMessage('Unable to open '+ Port);
        CloseHandle(hCommFile);
        exit;
      end;

    // Config
    if not SetupComm(hCommFile, RxBufferSize, TxBufferSize) then
        begin
        end;
       { Raise an exception }

    if not GetCommState(hCommFile, DCB) then
       { Raise an exception }
        begin
        end;


    DCB.StopBits:=0;
    DCB.BaudRate:=57600;
    DCB.ByteSize:=8;

    if not SetCommState(hCommFile, DCB) then
       { Raise an exception }
        begin
        end;

          with CommTimeouts do
    begin
       ReadIntervalTimeout := 1;
       ReadTotalTimeoutMultiplier := 1;
       ReadTotalTimeoutConstant := 1;
       WriteTotalTimeoutMultiplier := 1;
       WriteTotalTimeoutConstant := 1;
    end;


     if not SetCommTimeouts(hCommFile, CommTimeouts) then
       { Raise an exception }
        begin
        end;



    *Zamkniecie portu*
    Code:

    CloseHandle(hCommFile);


    *Odczyt/Zapis*
    Code:

    ReadFile(hCommFile, Buffer, sizeof(Buffer),
                  NumberOfBytesRead, nil);

    WriteFile (hCommFile, Send_string, length(send_string), NumberOfBytes, Nil);

    0
  • #12 07 Lis 2006 21:18
    starob
    Poziom 25  

    Polecam książkę
    "RS232C Praktyczne programowanie ....."
    aut. Andrzej Daniluk - Helion

    0
  • #13 09 Lis 2006 16:52
    treker
    Poziom 25  

    Witam!
    Z programem dam sobie już rade ale jak zainsatlowac ten komponent mam delphi 2005 zainstalowąłem go ale nie wiem gdzie ten plik *.dcu

    0
  • #14 09 Lis 2006 17:30
    mirekk36
    Poziom 42  

    ... kolego - jakiej ty wersji tego komponentu używasz???? - ja mam chyba ostanią wersję 3.10 (choć może jest nowsza - nie sprawdzałem) i w tej wersji 3.10 są jak byk pakiety: " DsgnCPort9.dpk" dla D2005 oraz "DsgnCPort10.dpk" nie wspominając o starszych wersjach Delphi. Jest tam też w katalogu source jak byk - plik CPort.dcu, CPort.inc oraz CPort.pas .... więc nie wiem co ty wyrabiasz, że nie możesz sobie tego zainstalować i używać ;) ??? ... no chyba, że masz jakąś starszą wersję tego komponentu w której jeszcze nie było pakietów do instalcji dla D2005 i D2006. Tą poprzednią wersją była v2.64 - maksymalnie dla D6 ale spokojnie kompilowała się wtedy też pod D7....

    ... poszukaj sobie więc wersji 3.10 (myślę że napewno będzie gdzieś na sourceforge.net)

    pozdrówka

    0
  • #15 09 Lis 2006 19:19
    treker
    Poziom 25  

    Elo
    Po pierwsze sorry, że tak truje.
    Opisze dokładnie co i jak mam ten komponent co pod 2005 działa otwieram delphi wybieram odpowiedni plik robie kompiluje i instaluj komponent się instaluje i w pokazuje komunikat że zainstalowało itd. i w uses nie podkreśla Cport ale nie mam na żadnej z palet tego komponentu więc każda wstawka w kodize która dotyczy tego komponentu zosatje podkreslona więc coś jest nei tak:/

    0
  • #16 09 Lis 2006 21:01
    mirekk36
    Poziom 42  

    ponieważ nie używam jeszcze D2005 więc sprawdziłem w necie i okazuje się, że wielu ma problemy z instalką tego pod Delphi wyższe niż 7 ;)

    jeszcze raz powtórzę - bo niby mówisz

    Cytat:
    "Opisze dokładnie co i jak..."


    a potem w zasadzie NIC tak jak w poprzednich postach. Jeśli chcesz żeby ci pomóc to spróbuj się wysilić i odpowiedzieć na konkretne pytania bo tak można tu gadać 3 lata i nic z tego nie wyniknie.

    1. Masz wesję 3.10???
    2. jeśli masz wersję 3.10 to czy widzisz, że masz tam w katalogu source takie pliki jak CPort.dcu, CPort.inc i CPort.pas???? Plus oczywiście wiele innych
    3. Czy nie masz w D2005 gdzieś w opcjach czegoś żeby ustawić ścieżkę poszukiwań dla bibliotek komponentów?????????? (to niemożliwe żeby nie było)

    jeśli na któreś z tych pytań odpowiesz przecząco to nie uda mi się tobie pomóc ;) ale jeśli poszukasz tego co w tych pytaniach i znajdziesz te elementy układanki to:

    spróbuj sobie podmienić zawartość pliku CPort.inc - dodaj w nim na końcu to:

    {$IFDEF VER170} { Delphi 2005 }
    {$DEFINE DELPHI_4_OR_HIGHER}
    {$DEFINE DELPHI_5_OR_HIGHER}
    {$DEFINE DELPHI_6_OR_HIGHER}
    {$DEFINE DELPHI_7_OR_HIGHER}
    {$DEFINE DELPHI_2005_OR_HIGHER}
    {$DEFINE DELPHI_2005}
    {$IFDEF BCBNOTDELPHI}
    {$ObjExportAll On}
    {$ENDIF}
    {$WARN UNSAFE_TYPE OFF}
    {$WARN UNSAFE_CODE OFF}
    {$WARN UNSAFE_CAST OFF}
    {$ENDIF}

    następnie spróbuj otworzyć plik CPortLib9.dpk i zapuść instalację. Aha ale zanim zapuścisz instalację DODAJ SOBIE do "Ordered list of Library path" w zakładce LIBRARY ścieżkę z katalogiem source - twojego komponentu (w którym są te wszystkie pliki). Dzięki temu jak puścisz kompilację CPOrt to w locie powinny się dokompilować pakiety designtime. No i powinna ci się pojawić zakładka w palecie komponentów o nazwie CPortLIB

    ...niestety nie jestem na 100% pewien czy opisany przeze mnie sposób zmiany w pliku CPort.inc pomoże(pomysł ten zaczerpnąłem z jakiejś strony po francusku)... ale jeśli odpowiesz na 3 pytania to może jeszcze uda mi się coś pomyśleć na później.

    0
  • #18 10 Lis 2006 17:02
    mirekk36
    Poziom 42  

    no ok ... ale ja własnie na tej francuskojęzycznej stronce wyczytałem, że D2005 napewno ma tę opcję o której mowa w pkt.3 ;)

    pokazałeś kawałek zrzutu ekranu ale on miał dotyczyć czego? ... bo aby dojść do tej opcji trzeba zapewne wejść przez Tools i dalej może będzie Environment Options a później zakładka library

    pozdrówka

    0
  • #19 10 Lis 2006 17:29
    treker
    Poziom 25  

    dobra znalazłem są inaczej nazwane podałem ściezke do katalogu i dalej go nie wiedze a w jakiej zakładze on by się pojawił?

    0
  • #20 10 Lis 2006 18:03
    mirekk36
    Poziom 42  

    ... no przecież mówiłem we wcześniejszym poscie:

    Cytat:
    No i powinna ci się pojawić zakładka w palecie komponentów o nazwie CPortLIB

    0
  • #21 11 Lis 2006 13:33
    treker
    Poziom 25  

    acha sorry przeoczyłem:/

    Zrobiłem tak jak mówiłeś z tym plikiem inc i wyszło to co w załączniku ale zakładki takiej nie ma a mam podan

    0