![]() |
AW: Programm stürzt ab und sperrt Comport (USB-RS232)
Ich hätte jetzt gefragt, ob es sich um Windows 8.1 handelt.
Da gibt es auch so einen "Bug". Mit einem anderen Treiber ging es besser und nach dem Upgrade aus Windows 10 ging es endlich richtig. |
AW: Programm stürzt ab und sperrt Comport (USB-RS232)
An Task's, die noch irgendwo herumgeistern, habe ich nichts gefunden.
Das Schliessen des Comports erfolgt unter Form.OnClose. Habe alles reduziert auf ein kleines Testprogramm. (Ich weiss, da sind Sachen drin "die man so nicht macht") Und ja, der Comport ist selbst nach einem Neustart blockiert. So langsam bin ich der Ansicht, das dieses alles nicht mit Lazarus zu tun hat. War wohl nur zufällig passiert als ich das mit Lazarus erstellte Programm ausserhalb der IDE gestartet hatte. (Off-Topic verschieb?) Also: - Heute morgen backup von C neu eingespielt, Comport ok. - Lazarus IDE -> Programm kompiliert und gestartet, ok. - Programm ausserhalb IDE gestartet, auch gut. - Mehrfach wiederholt, alles ok. Dann aber (ja, mach man auch nicht): wärend Programm (exe.file) läuft den USB/RS232 abgezogen. Keine Fehlermeldung, aber natürlich auch keine Kommunikation. USB/RS232 wieder gesteckt, seit dem kann ich mit nichts mehr auf den Comport zugreifen. HTERM schreibt: "Com6 is blocked by another application" Der Gerätemanager zeigt "alles gut" an, finde auch wieder nichts im Hintergrund. Also gehe ich davon aus, das bei dem ersten gau auch zufällig ein Wackeliger in der Hardware war. Nur das darauf Windows sich mit einem erzwungenen Neustart meldete. Jetzt nicht. Würde jetzt gerne einen Neustart tätigen, um zu sehen on Comport immer noch geblockt ist, leider läuft gerade ein Backup (60%), welches noch etwa eine Stunde dauert. Bin mal gespannt ...
Code:
Auch wenn es vermutlich grausam ist, am Programm liegt es nicht. :oops:
unit unitspannung;
{$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls, ComCtrls, SdpoSerial; type { TForm1 } TForm1 = class(TForm) Button1: TButton; Label1: TLabel; Memo1: TMemo; ProgressBar1: TProgressBar; SdpoSerial1: TSdpoSerial; procedure Button1Click(Sender: TObject); procedure FormClose(Sender: TObject; var CloseAction: TCloseAction); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure SdpoSerial1RxData(Sender: TObject); procedure anzeige(s: string); private { private declarations } public { public declarations } eingang : string; end; var Form1: TForm1; implementation {$R *.lfm} { TForm1 } procedure Tform1.anzeige(s: string); var i : integer; ftemp : real; begin for i:=1 to length(s) do if s[i]='.' then s[i]:=','; Label1.Caption := Copy(s,3,6); ftemp := StrToFloat(label1.caption); ProgressBar1.Position := Round(ftemp); label1.Caption := Format('%2.2f',[(12/1023)* ftemp])+'V'; end; procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction); begin SdpoSerial1.Active:=false; SdpoSerial1.Close; end; procedure TForm1.FormCreate(Sender: TObject); begin end; procedure TForm1.Button1Click(Sender: TObject); begin SdpoSerial1.Active:=true; end; procedure TForm1.FormShow(Sender: TObject); begin SdpoSerial1.Device := 'COM6'; end; procedure TForm1.SdpoSerial1RxData(Sender: TObject); begin eingang := eingang + SdpoSerial1.ReadData; if length(eingang) >= 52 then begin anzeige(eingang); Memo1.Lines.Add(eingang); eingang := ''; end; end; end. |
AW: Programm stürzt ab und sperrt Comport (USB-RS232)
Nur als Anreiz..
Eine Formatierung wäre nicht schlecht. ;) Und leere proceduren sind unnötig. Da hier in FormCreate nichts geschieht kannst du diese auch direkt löschen. Oder aber du packst das
Delphi-Quellcode:
SdpoSerial1.Device := 'COM6';
nach FormCreate und löschst FormShow gruss |
AW: Programm stürzt ab und sperrt Comport (USB-RS232)
The trick is to open the Command Prompt as administrator and start the Device Manager from the same command prompt.
1. Right-click “Command Prompt” in Accessories and choose “Run as Administrator” 2. Enter set devmgr_show_nonpresent_devices=1 3. Enter start devmgmt.msc 4. In the box that opens, select Show hidden devices in the ‘view’ menu. Now if you expand the section on COM ports, all the COM ports that have ever been created will be displayed, the non present ones being in grey. You can uninstall away anything that you don’t want (right click, select uninstall). |
AW: Programm stürzt ab und sperrt Comport (USB-RS232)
Juhu .... klappt! :-D
Drei graue Einträge, alle auf den gleichen Prolific-Teil. Nach Anleitung rausgenommen, jetzt Comport wieder verfügbar! It works! Thank you so much! :thumb: |
AW: Programm stürzt ab und sperrt Comport (USB-RS232)
Liste der Anhänge anzeigen (Anzahl: 1)
Habe nochmal das alte Thema ausgebuddelt, weil es wieder passiert ist. Comport is blocked ...
Dann in einem Forum gelesen, daß Windows gerne Daten, die bereits beim Start über die serielle Schnittstelle kommen, gerne als "vorhandenen Trackball" interpretiert und schon bein Starten einbindet. Den (nicht vorhandenen) Trackball im Gerätemanager deaktiviert, und schwups ist auch die Schnittstelle nicht mehr blockiert. Falls es mal jemanden trifft ... :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz