1 网络传真机接入网络
网络传真机通过图1所示的方式接入到网络中。网络传真机通过网络传真服务器进行转发,通信协议是非实时传真标准协议,根据目标传真机是网络传真机还是普通传真机,选择对应的Internet网络、PSTN网络进行推送。接入PSTN网络和目标传真机通过T30协议进行通信。通过Internet发送,传输的数据文件格式是Tiff,服务器会判断该传真是发往普通传真机还是网络传真机。如果发往普通传真机,服务器会解析Tiff文件并将解析出的传真编码数据发往普通传真机;如果发往网络传真机,则将该Tiff文件放到用户目录中,等待网络传真机自动或者手动收取。
2 网络传真图像传输系统设计
网络图像传输过程如图2所示。在发送网络传真时,传真数据被封装成Tiff文件进行发送。发送过程是:通过扫描设备获得像素点数据,经MH编码模块编码成MH码字,由封装Tiff文件模块封装成Tiff文件,启动网络发送模块进行发送。接收过程是:通过网络接收一个Tiff文件,提取附件并取出Tiff文件进行Tiff文件解析,然后经MH解码和打印模块进行MH解码和发送打印时序,最后由TPH(Themal Print Head)打印设备完成打印输出。
Tiff文件的构造和解析是本系统设计的难点。Tiff文件是由许多标签组成的,分为文件头和IFD(Image File Header)两部分。一个IFD中存储一幅图像的信息,IFD可以由许多标签组成。一个Tiff文件的格式如图3所示。具体的每个标签的含义参考RFC 2301(File Format for Internet Fax)文档、Tiff 6.0 Specification文档。
3 网络传真图像传输系统软硬件实现
系统硬件使用Altera Cyclone EPlC20开发板,CPU为NiosII。开发板含有SMSC LAN91C111-NE MAC/PHY芯片,用于实现网络中的MAC/ PHY功能。操作系统采用μC/OS-II,TCP/IP协议栈使用移植到μC/OS-II中的Niche TCP/IP协议栈。由于μC/OS-II是多任务实时内核,故图像传输系统设计了4个任务(Task)。任务之间的通信使用消息队列MailStorageQ、PrintStorageQ,如图4所示。
Create Tiff Task:该任务负责创建Tiff文件,调用构造Tiff文件的函数创建Tiff文件,调用成功后将Tiff文件的首地址通过消息队列MailStorageQ传递给发送网络传真的任务SmtpClientTask。
SmtpClientTask:该任务负责以SMTP协议的命令形式与网络传真服务器进行通信,命令有EHLO、AUTH、RCPT、MAIL、DATA、QUIT等。传真文件以邮件附件的形式进行发送。一封待发送的网络传真格式邮件(简称“邮件”)定义如下:邮件头,接着是一个空行,然后是邮件体(即正文),正文之后是附件。邮件头主要包括Date、From、To、Subject、Message-ID、Mime-Version、Content-Type等。正文是协议规定的标签:值格式的文本行,主要包含有账号密码、发送参数、发送目标号码列表信息等。附件是传真数据文件(Tiff文件)的base64编码字符。正文和附件在邮件中被分为两个Boundary。
Pop3ClientTask:该任务负责以POP3协议的命令形式与网络传真服务器进行通信,进行网络传真的收取。NetfaxprintTask:该任务负责分析邮件,解析邮件头,提取出附件(Attachment),对附件进行base64解码,然后对Tiff文件进行解析,定位出MH编码数据,交由MH编码和打印控制电路进行Tiff文件(传真)打印。
4 测试与调试
测试环境以亚森公司(AsiaTelecom)的网络传真服务器为传真服务器,Altera Cyclone EP1C20开发板为网络传真终端,开发板连接到Internet。
发送的Tiff文件(网络传真)样张如图5所示。接收的Tiff文件(网络传真)也可以成功解码和打印输出。
该网络传真图像传输系统成功解决了网络传真的图像组织与传输、解码以及打印的技术难题,对开发网络传真机具有重要意义。