SetSerialPortStatus - Bedeutung des Parameters 'Wert'?

Hardware- und Elektronikbasteleien, Ansteuerung von Schnittstellen und Peripherie.
Fragen zu "Consumer"-Problemen kommen in Offtopic.
JayCool
Beiträge: 54
Registriert: 02.08.2007 20:03

SetSerialPortStatus - Bedeutung des Parameters 'Wert'?

Beitrag von JayCool »

Hi @ all,

ich würde gerne einzelne Pins der seriellen Schnittstelle direkt ansteuern, also nicht ganze Bytes via RS232 senden/empfangen, sondern nur die einzelnen Pins ein- und ausschalten.

Um verschiedene Pins zu schalten, gibt's ja bekanntlich den Befehl

Code: Alles auswählen

 SetSerialPortStatus(#SerialPort, Attribut, Wert)
In der PureBasic-Hilfe zum genannten Befehl wird aber leider die Bedeutung und der Wertebereich des Parameters 'Wert' nicht erläutert. Könnte mir da jemand etwas auf die Sprünge helfen?

Außerdem habe ich in diesem Zusammenhang noch eine Frage zum Befehl

Code: Alles auswählen

OpenSerialPort(#SerialPort, SerialPortName$, Baud, Paritaet, Data, Stop, HandshakeModus, EingabePufferGroesse, AusgabePufferGroesse)
Wenn ich nicht vorhabe, eine RS232-Übertragung zu verwenden, sondern ich nur die verschiedenen Pins ein- und ausschalten will, was muss ich dann als Baudrate eingeben? Muss für 'Baud' dann Null eingegeben werden, oder irgend ein Wert, oder kann man den Parameter einfach leer lassen???

Gruß,
JayCool

PS: Gibt's so eine Möglichkeit zum Schalten einzelner Pins auch für den Parallelport???
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag von Falko »

Beispiel aus der Hlfe unter Einstellungen:

#PB_SerialPort_DTR: Set DTR signal status (0 or 1)


für Wert stellst du einfach wie in der Hilfe beschrieben 0 oder 1 ein. Damit kannst du die Steuerleitungen deaktivieren bzw. aktivieren.

Wegen der Baudrate, wenn du mal im Gerätemanager unter Kommunikationesanschluss schaust, dort kann man unter Bits pro Sekunde (Bauds) sehen, welche Werte dort eingegeben werden können.
Ich denke, das man schon dort diese Werte benutzen sollte. Kann es aber
nicht mit Bestimmtheit sagen. Aber wenn dort 0 stehen würde, könnte es
sein, das nix gesendet wird, wenn Null Bits Pro Sekunde gesendet würden.


Zu LPT, wenn du die acht Datenleitungen bzw. weitere Steuerleitungen schalten willst, ist das mit WinIO, Inpout32 und weiteren Treibern und DLL's möglich.

Beispiele dazu müsstest du hier in der Hardwaresektion finden. Dazu wurden auch Libs für PB geschrieben. Auf meiner HP müsstest du dazu auch was zu LPT oder RS232 finden können.


Gruß Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
JayCool
Beiträge: 54
Registriert: 02.08.2007 20:03

Beitrag von JayCool »

Hi Falko,

vielen Dank für das Feedback!
Meine Frage war mal wieder ein Fall von Betriebsblindheit, da ich insgeheim davon ausgegangen bin, dass SetSerialPortStatus das mit dem Parameter Attribut bezeichnete Bit setzt, und im Geiste hatte ich, dass es zum Löschen des Bits einen entsprechenden Befehl ClearSerialPortStatus gibt. <)

Deshalb hat es mich verwirrt, dass im Beispiel zum Befehl SetSerialPortStatus plötzlich eine 8 und eine 9 als Parameter 'Wert' verwendet wird. :oops:

Als ich das letzte Mal richtig programmiert habe, war das eben nicht PureBasic, sondern PIC-Assembler für die kleinen schwarzen Dinger mit den 16 oder 28 Beinchen von der Firma Microchip.
Da gibt's den Befehl BSF f,b , der in der RAM-Zelle f das Bit b setzt, und dem gegenüber den Befehl BCF f,b , der das Bit b löscht.

Gruß, JayCool :praise:
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag von Falko »

Wer weiß, vielleicht kann ich ja in Punkto Pics und Atmels von Dir später
ein paar gute Infos bekommen. Denn da muss ich total umdenken und dazu
lernen. :allright:

Gruß Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Keepdry
Beiträge: 11
Registriert: 31.03.2005 23:32
Wohnort: Freistatt

Beitrag von Keepdry »

Beim Öffnen der Com´s musst du eine Baud-Rate angeben, wenn du nur die Handshake Leitungen aus/einschalten willst ist es zwar egal welche Baudrate du angibst. Aber die meisten Programme benutzen hierzu die API von Windows und da muss eine Baudrate angegeben werden.
Da ich annehme das du die Handshakes für Steuerungsaufgaben nutzen willst, denk bitte daran das nicht alle PC´s Optokoppler eingebaut haben und so bei einem kleinen Schaltungsfehler die Schnittstelle defekt ist.

Grüsse
JayCool
Beiträge: 54
Registriert: 02.08.2007 20:03

Beitrag von JayCool »

Hi,

ich hab' da zunächst mal an so Zeuchs gedacht, wie auf http://www.skilltronics.de/versuch/elek ... /4094.html beschrieben.

Bloß eine Frage habe ich noch:

Funktioniert die PureBasic-Serial-Port-Geschichte nur mit dem auf dem Motherboard von Desktop-PCs integrierten seriellen Port oder auch mit USB-Serial-Adaptern? Ich hab' nämlich mal irgendwo gelesen (weiß nicht mehr, wo das war), dass da u.U. nicht alle Pins beschaltet sind.

Solche Sachen wie DIY-µC-Programmiergeräte funktionieren ja bekanntlich nicht mit diesen Adaptern.

Hat noch zufällig jemand 'ne Ahnung, ob bei einem Serial-Port auf Basis eines Express-Card-Adapters sämtliche 9 Pins beschaltet sind und angesteuert werden können?
Ich wollte mir nämlich Anfang nächsten Jahres ein Netbook vom Typ Lenovo S10 kaufen, und das hat zufällig nen Express-Card-Slot.
Benutzeravatar
Falko
Admin
Beiträge: 3531
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.0
Kontaktdaten:

Beitrag von Falko »

Im Microcontrollerforum habe ich was ähnliches gelesen, was aber
eigentlich den USB-Parallelport betraf. Das würde nicht alle Signale
nutzen, wie in der originalen LPT-Schnittstelle, weil eben nur das Nötigste
für den Drucker bereit gestellt würde.

Beim USB2Serial, da gibt es wahrscheinlich unterschiedliche Varianten.
Meiner funktioniert soweit mit der Schaltung, die in deinem Link gezeigt
wird, ohne Probleme, was ich schon mal nachgebaut hatte.

Z.B. habe ich folgende Digitalanzeige damit angesteuert, siehe Video
darunter. Dort ist dieser USB2Serial-Adapter über ein USB-Kabel unten
links noch gerade eben zu sehen.

Funktioniert ohne Problem, wie man dort schön sehen kann.

http://www.falko-pure.de/html/projekt_7seg-anzeige.html


Gruß, Falko
Bild
Win10 Pro 64-Bit, PB_5.4,GFA-WinDOS, Powerbasic9.05-Windows, NSBasic/CE, NSBasic/Desktop, NSBasic4APP, EmergenceBasic
Antworten