Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[DELPHI] ComPort - w jaki sposób 'zwolnić' port?

axel234 16 Nov 2009 22:42 4040 10
phoenixcontact
  • #1
    axel234
    Level 17  
    Witam

    Korzystam z komponentu ComPort do przesyłania danych na port com. Przed przesłaniem danych korzystam z comport1.open, po przesłaniu daję comport1.close.
    Dane przesyłane są prawidłowo, ale jeśli po przesłaniu danych ponownie użyję przycisku, który wysyła dane, aplikacja się zawiesza i dane nie są wysłane. Dopiero jak wyciągnę wtyczkę z portu program się odwiesza i pojawia się komunikat: 'Purge Comm function failed...'

    Wnioskuję, że port jest w jakimś sensie zajęty po pierwszym przesłaniu danych, ale sądziłem, że comport1.close zwalnia port. Chyba się myliłem. Jakiej komendy powinienem użyć, żeby port był 'zwalniany' po każdym przesłaniu danych?
  • phoenixcontact
  • phoenixcontact
  • #3
    axel234
    Level 17  
    Sprawdziłem przed sekundą - zawiesza się na open. Kod jest prosty - jest to przesłanie sygnału do drukarki fiskalnej poprzez comport1.writestr(...). Przed wysłaniem jest open a po wysłaniu close. Dla powyższej próby rozpisałem to na trzy buttony - 1.open, 2.writestr, 3.close - program stanął po kliknięciu open.
  • #5
    axel234
    Level 17  
    Po kilkunastu próbach samego otwierania i zamykania, program się nie zawiesił. Jak coś wysłałem to stanął przy próbie otwarcia, ale co ciekawe nie przy pierwszej próbie: po wysłaniu otworzyłem port i zamknąłem i dopiero przy drugiej próbie otwarcia program stanął. Po wyjęciu wtyczki pojawił się komunikat: Unknown error #31 on com16.

    Jeśli dobrze zaobserwowałem to to chyba nie jest reguła - czasem przy pierwszej próbie otwarcia program przestaje odpowiadać, czasem przy drugiej.

    Co jeszcze zaobserwowałem to to, że do drugiego portu obok mam podłączony modem i w momencie kiedy program się zawiesza (program nie korzysta wogóle z modemu ani z portu do którego modem jest podpięty) rozłącza mi internet (nie na modemie tylko po prostu w windowsie). Wystarczy, że też wyjmę wtyczkę modemu z gniazda i włożę ją ponownie i internet znowu działa. Dziwna sytuacja.

    Oczywiście cały czas mówię o portach USB. I drukarka fiskalna i modem są podłączone przez USB.
  • #7
    axel234
    Level 17  
    W jakim sensie czego używam? Tak jak powyżej napisałem używam ComPort, ale domyślam się, że nie o to pytasz(?). Dostałem druk. fiskalną + sterowniki usb producenta do tej drukarki, zainstalowałem i drukarka drukuje prawidłowo.
  • #9
    axel234
    Level 17  
    Myślę, że to nie ma związku z komponentem, ponieważ wcześniej używałem serialportng i występowały te same problemy - no chyba, że z tymi dwoma komponentami jest coś nie tak.

    Zauważyłem, że jeśli użyję open ale nie użyje close to wszystko działa prawidłowo. Zamykam program, uruchamiam ponownie, drukuję paragon i program nie wiesza się (przynajmniej po 10 przeprowadzonych próbach).

    ComPort, którego używam to wersja 2.63 - w dokumentacji w dziale 'co nowego' jedną z informacji jest to, że poprawiony został bug nieprawidłowego rozłączania portu.
  • #11
    Anonymous
    Anonymous