[Python-bugs-list] [ python-Bugs-674574 ] Access to serial devices through Carbon.CF

SourceForge.net noreply@sourceforge.net
Sat, 25 Jan 2003 23:53:30 -0800


Bugs item #674574, was opened at 2003-01-25 15:15
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=674574&group_id=5470

Category: Macintosh
Group: None
Status: Open
Resolution: None
Priority: 3
Submitted By: Pascal Oberndoerfer (pascal_efi)
Assigned to: Jack Jansen (jackjansen)
Summary: Access to serial devices through Carbon.CF

Initial Comment:
There is currently no wrapper to access serial RS232
devices (e.g. Keyspan USB-serial adaptor) through
Carbon.CF on MacOS X.

This was my short and dirty hack to get a list of
currently available (Keyspan) serial devices:

#!/usr/bin/env python

import os
import string

PRE = 'cu'
#PRE = 'tty'

device_list = filter(lambda s: string.count(s,
PRE+'.USA'), os.listdir('/dev/'))
print device_list


But as Jack said:

Anything that is in CF but not wrapped in the Carbon.CF
module 
should be considered a bug. I know there's still quite
a bit missing, 
but if people put bug reports up on sourceforge that
will influence 
the order in which I add stuff to the CF module. It
would help a lot 
if you mentioned the data structure and/or some of the
routines 
you need.
--
- Jack Jansen        <Jack.Jansen@oratrix.com>        
http://www.cwi.nl/~jack -
- If I can't dance I don't want to be part of your
revolution -- Emma 
Goldman -


Dan Grassi supposed (slightly paraphrased) to do the
folowing on MacOS X with IORegistryExplorer (inside
/Applications/Utilities)

> Search for IOSerialBSDClient  with a key of 
> IOSerialBSDClientType 
> with a value of IORS232SerialStream.  
> Then get the value of the 
> IODialinDevice (/dev/tty.*) or IOCalloutDevice
(/dev/cu.*) ...


For a single serial device this can result in:

{
    CFBundleIdentifier = com.apple.iokit.IOSerialFamily; 
    IOCalloutDevice = /dev/cu.USA19QW21P1.1; 
    IOClass = IOSerialBSDClient; 
    IODialinDevice = /dev/tty.USA19QW21P1.1; 
    IOMatchCategory = IODefaultMatchCategory; 
    IOPersonalityName = IOSerialBSDClientSync; 
    IOProbeScore = 1000; 
    IOProviderClass = IOSerialStreamSync; 
    IOResourceMatch = IOBSD; 
    IOSerialBSDClientType = IORS232SerialStream; 
    IOTTYBaseName = USA19QW21P1.; 
    IOTTYDevice = USA19QW21P1.1; 
    IOTTYSuffix = 1; 
    ParentKey =
"KEXTBundle?com.apple.iokit.IOSerialFamily"; 
}


So maybe return a list of dictionaries?

Pascal (MacOS X, MacPython 2.3a1 [Framework Install])


----------------------------------------------------------------------

>Comment By: Pascal Oberndoerfer (pascal_efi)
Date: 2003-01-26 08:53

Message:
Logged In: YES 
user_id=688343

Jack, (sorry, quite long again)

I was afraid you would ask -- because I don't know. So I
went to the Apple docs and found some information that made
me doubt if it's really Carbon.CF I am looking for.

http://developer.apple.com/techpubs/macosx/Darwin/General/AccessingHardware/AH_Intro

As I need "only" a list of accessible serial devices and the
paths to their device files two chapters sounded interesting
to me:

1. I/O Kit Hardware Access > 
•	Using a Device Interface to Access a Device > 
  	-	Finding Devices

2. Working With Serial I/O > 
•	Working With a Serial Port Modem > 
  	-	Setting Up Your Programming Environment
  	-	Setting Up a Main Function
  	-	Finding All Serial Port Modems
  	-	Getting the Path to the Device File for a Modem

Finding all available serial ports and getting the path(s)
to their respective device files. Opening, working with, and
closing the ports is all done with pyserial. If I only
understood the docs! (have I ever been in the need of an
excellent example why I prefer Python over any other
programming language? ;-)

I found some sample code at Apple as well:

http://developer.apple.com/samplecode/Sample_Code/Devices_and_Hardware/Serial/SerialPortSample.htm

But again: I am not a professional programmer (especially
not C) so I have no idea what it means or what to do with it.

Hmm... Actually, if it is not possible to access this from
CF then -- according to your definition -- it's not a bug
but a feature request I guess.

The reason it would be extremly nice to have this way to
scan for the serial ports is that they disappear completely
with the removal of the USB-adapter. But as there is a
workaround priority is really low, low, low!

Pascal

PS: my motivation behind all this is a small data logging
utility I need to write.


----------------------------------------------------------------------

Comment By: Jack Jansen (jackjansen)
Date: 2003-01-25 23:46

Message:
Logged In: YES 
user_id=45365

Pascal,
could you tell me which bits of CF you need? I asume CFBundle, but would you need all of it, or just a part? Would you need anything more than CFBundle?

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=674574&group_id=5470