Aha!
Hur är det med interruptstöd och FT232R?
Fungerar det i Windows XP om man kör med "virtuell com-port" i Python?
T.ex med TIOCMIWAIT och
ioctl(), eller gärna något som fungerar i Windows också.
Annars får jag nog gå över till Linux för att programmera och testa resten av projektet.
Det är ändå där som det ska köras när det är klart, men det vore kul om det fungerade i båda världarna
utan några direkta modifieringar.
(Upptäckte just att om man använder pyserial så importeras det med "import serial". Inget "py" i början alltså.)
edit: Lägger till några av de sajter jag där jag letat idéer och svar:
http://pyserial.sourceforge.net/
Stackoverflow - Hardware interrupt for synchronous data acquisition
Stackoverflow - Python monitor serial port RS232 handshake signals
Stackoverflow - Full examples of using PySerial package
Varesano.net - Serial RS232 connections in Python
Det är inte nödvändigtvis så att interrupt är den enda lösningen.
Det jag främst är ute efter är en lösning som inte tar onödigt mycket tid av CPU'n.
(Det vore lite onödigt med tanke på att jag förväntar mig data in på serieporten max ett par gånger per dag
och då rör det rör sig om absolut max 50 alfanumeriska tecken som ska överföras per gång.
Det vore en sak om CPU'n aldrig behövde göra något annat, men i detta fall är det en server i ett lokalt nätverk.
En till edit:
Windows kör ju med COM1, COM2, osv och Linux med /dev/ttyS1, osv.
Kan man istället använda FTDI-kretsens String Descriptors (dvs t.ex namnet) istället?
Jag letar efter en lösning på det, men om någon vet på rak arm så..
En bit på vägen: Jag kan scanna portarna och se:
[('COM1', 'Kommunikationsport (COM1)', 'ACPI\\PNP0501\\1'), ('COM7', 'USB Serial
Port (COM7)', 'FTDIBUS\\VID_0403+PID_6001+AMX0US9GA\\0000')]
0403 och 6001 är Vendor ID respektive Produkt ID, så de ger inte så enormt mycket.
Däremot: "AMX0US9GA" är serienumret och det är unikt för just den här kretsen.
(Jag har själv stått för datan som ligger till grund för det.)
Så det går helt klart att använda för att hitta rätt namn på själva serieporten oavsett
vilka andra portar som finns och oavsett om man kör Windows eller Linux.
..
Och en stund senare ser det istället ut såhär:
Kod: Markera allt
Vi har hittat 2 serieportar. Se nedan:
-------------------------------------------
Portens namn: COM1
Beskrivning : Kommunikationsport (COM1)
Chip data : ACPI\PNP0501\1
Serie nr :
- - - - - - - - - - - - - - - - - - - - - -
Portens namn: COM7
Beskrivning : USB Serial Port (COM7)
Chip data : FTDIBUS\VID_0403+PID_6001+AMX0US9GA\0000
Serie nr : AMX0US9GA
- - - - - - - - - - - - - - - - - - - - - -
Port COM7 identifierades som rätt port.
Men det här med interrupt-stödet har jag fortfarande inget svar på.
Ingen annan heller tydligen. Lite synd.