CH341
中文手册(二)
4
ch341closedevice( //
关
闭
CH341
设备
ULONGiindex ); //
指
定
CH341
设备
序
号
用
完
CH341
后,或者
应
用
程序
退
出
前
,
应该
关
闭
CH341
设备
ch341getstatus( //
通过
CH341
直接输入数据和
状态
ULONGiindex, //
指
定
CH341
设备
序
号
PULONGistatus ); //
指向
一
个
双字
单
元
,
用
于
保
存
状态
数据
位
7-
位
0
对
应
CH341
的
d7-d0
引脚
,位
8
对
应
CH341
的
ERR#
引脚
,
位
9
对
应
CH341
的
PEMP
引脚
,
位
10
对
应
CH341
的
INT#
引脚
,
位
11
对
应
CH341
的
SLCT
引脚
,位
23
对
应
CH341
的
SDA
引脚
3.2.
中
断
处
理
API
ch341setintroutine( //
设定
中
断
服务
程序
ULONGiindex, //
指
定
CH341
设备
序
号
mpch341_int_routineiintroutine ); //
指
定
中
断
服务
程序
,
为
无效的
则
取消
中
断
服务
设
置
CH341
的中
断
服务
程序,
iIntRoutine
是一
个
符
合
mpch341_int_routine
格
式的
子
程序,
当
CH341
的
INT#
引脚
出
现
上
升沿
时
,
DLL
自
动
调
用
iIntRoutine
,并
向
其
提供
一
个引脚状态参
数,
引脚状态参
数中,位
为
1
则
说明
对
应
的
引脚为高
电
平
,位
为
0
则
说明
对
应
的
引脚为低
电
平
,
位
7-
位
0
对
应
CH341
的
d7-d0
引脚
,位
8
对
应
CH341
的
ERR#
引脚
,位
9
对
应
CH341
的
PEMP
引脚
,
位
10
对
应
CH341
的
INT#
引脚
,位
11
对
应
CH341
的
SLCT
引脚
例如
:主程序
主要的 {
......
ch341opendevice( 0 ); //
打
开
设备
,
针
对
0#
设备
,
如果
有多
个
,可以计数
ch341setintroutine( 0, myinterruptevent ); //
设
置中
断
服务
程序
......
读写数据,或者在接
收
到
中
断
服务
程序的
通
知
后
处
理
中
断
ch341closedevice( 0 ); //
用
完后
关
闭
设备
}
中
断
服务
程序,
当
CH341
的
INT#
引脚
出
现
上
升沿
时
,
DLL
会
自
动
调
用
该
子
程序
voidCALLBACKmyinterruptevent ( unsigned 长pinstatus ) {
如果 ( pinstatus &放大; mstatebiterr ) printf(
“
发生
中
断
时
ERR#
引脚为高
电
平
”
);
else printf(
“
发生
中
断
时
ERR#
引脚为低
电
平
”
);
......
自
己处
理
或者
通
知
主程序
处
理
}
3.3.
并口数据
传
输
API
ch341initparallel( //
复位并
初
始
化
并口
,rst#
输出
低
电
平脉冲
ULONGiindex, //
指
定
CH341
设备
序
号
ULONGimode ); //
指
定
并口
模
式
: 0
为
EPP
模
式
, 2
为
MEM
模
式
, >=256
保持当前
模
式
在
CH341
上
电
时
自
动
初
始
化
并口,
如果
需要,
也
可以
重新初
始
化
并口,以
清除缓
冲
区。
在
初
始
化
过
程中,
RST#
引脚
会
输出
100uS
左右
宽度
的
低
电
平脉冲
,
用
于
通
知
外部
设备
复位,
ch341eppreaddata( // epp
方式读数据
: wr#=1, ds#=0, as#=1, d0-d7=输入
ULONGiindex, //
指
定
CH341
设备
序
号
PVOIDobuffer, //
指向
一
个
足够
大
的
缓
冲
区
,
用
于
保
存读
取
的数据
PULONGiolength ); //
指向
长
度
单
元
,
输入
时为
准备
读
取
的
长
度
,
返回
后
为实际
读
取
的
长
度