This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: Access to serial devices through Carbon.CF
Type: Stage:
Components: macOS Versions:
process
Status: closed Resolution: not a bug
Dependencies: Superseder:
Assigned To: jackjansen Nosy List: jackjansen, pascal_efi
Priority: low Keywords:

Created on 2003-01-25 14:15 by pascal_efi, last changed 2022-04-10 16:06 by admin. This issue is now closed.

Messages (4)
msg14204 - (view) Author: Pascal Oberndoerfer (pascal_efi) Date: 2003-01-25 14:15
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])
msg14205 - (view) Author: Jack Jansen (jackjansen) * (Python committer) Date: 2003-01-25 22:46
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?
msg14206 - (view) Author: Pascal Oberndoerfer (pascal_efi) Date: 2003-01-26 07:53
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.
msg14207 - (view) Author: Jack Jansen (jackjansen) * (Python committer) Date: 2003-01-29 09:59
Logged In: YES 
user_id=45365

I had a look through the documentation you referred to, and you would indeed need an interface to IOKit. I'm closing this report (as the title is misleading), if you really need IOKit file a feature request. But don't expect it to happen soon unless you contribute:-)
History
Date User Action Args
2022-04-10 16:06:10adminsetgithub: 37832
2003-01-25 14:15:21pascal_eficreate