【发布时间】:2010-08-31 08:20:46
【问题描述】:
恐怕我的问题中有几个术语是错误的。请多多包涵并纠正我的错误。
我必须编写一个库/程序,该库/程序将提供一组功能来操作连接在串行端口上的读卡器。就像弹出插入其中的卡一样,用户只需调用他的代码,例如,
cardEject(); // or
track2Data( response); // to read data of track 2 of magnetic stripe.
cardEject() 和其他函数将自己处理打开串行端口,向其写入数据,检查确认,检查错误代码,在失败时重新发送命令等。我很清楚与串行设备通信港口。
我的问题是,在编写完所有这些函数并对其进行测试之后,我应该如何将它们提供给用户。
我应该给他一个头文件(.h)和一个目标文件(.o)吗?这样他就可以在编译他的实际程序时链接到该对象。
我应该提供一个静态库(.a)吗?
哪个更好?
每个函数打开串口然后关闭它是不是一个好主意?或者initCardReader() 打开它,设置它的属性,closeCardReader() 应该关闭它?所有其他函数只能在initCardReader()之后调用?
现在是一个愚蠢但真实的问题 :-) 用于此类程序的术语是什么?它是驱动程序、库还是设备接口?此类项目的正确标签是什么?
感谢您的宝贵时间。
编辑
感谢大家对我的指导。非常感谢。
这个 API 必须成为更大项目的一部分。事实上,我也会从事那个项目。但是这个 API 很有可能会在有我或没有我的其他项目中使用。我认为,考虑到可能在其他项目中使用,图书馆更有意义。如果我错了,请纠正我。
【问题讨论】:
-
读卡器的 API,虽然定义可能因人而异 :-)
-
离题,但我看不到你的名字就不会想到'肖申克的救赎':)
标签: c serial-port linux-device-driver api-design