EmtronixETR186嵌入式网络模块编程手册英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04感谢您购买英创信息技术有限公司的产品:ETR186嵌入式网络模块.
ETR186是一款名片大小、采用R8822D微处理器的嵌入式PC模块,其外形尺寸仅为64mm*46mm;配有Flash、串口、GPIO、精简ISA总线、实时时钟、LCD接口、矩阵键盘接口等板载资源;采用BC3.
1作为开发调试工具.
ETR186运行可靠、功耗小、体积小、售价便宜,特别适合用作低成本批量产品的核心平台,为GPRS无线数据通讯、工业自动化、智能仪器仪表、分布式远程通讯与控制等众多行业的客户提供了快速、极高性能价格比的产品解决方案.
本手册主要是对ETR186的驱动程序及相应的测试程序作详细的介绍,其相关的软件程序代码在所提供的应用光盘目录中,按照ETR186的不同应用,分为以下几个子目录:.
.
\\startup程序起步的Demo例程.
.
\\driversETR186相关的硬件接口函数及相应的测试例程.
.
\\UARTETR186串口驱动程序及相应的测试例程.
.
\\LCDETR186LCD汉字、图形显示驱动程序及相应的测试例程.
.
\\PPPnet基于PPP通讯的TCP/IP协议库API接口函数及相应的测试例程(主要是针对GPRS的应用测试例程)本手册将以上述几部分驱动程序为单元逐一介绍具体内容.
随着用户需求的不断发展,我们提供的驱动程序也在进行相应的更新调整,用户可访问英创公司网站或直接与英创公司联系,以及时获得ETR186的最新驱动程序.
此外,英创公司针对模块的使用编写有《ETR186嵌入式网络模块数据手册》;针对开发评估底板的使用编写有《ETR186嵌入式网络模块开发评估底板手册》.
这三个手册都包含在英创为用户提供的产品开发光盘里面,用户也可以登录英创公司的网站下载阅读.
用户还可以访问英创公司网站或直接与英创公司联系以获得ETR186的其他相关资料.
http://www.
emtronix.
com028-851400281英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04英创信息技术有限公司联系方式如下:地址:成都市高新区高朋大道5号博士创业园B座402#邮编:610041联系电话:028-85140028028-85137442028-85136173传真:028-85141028http://www.
emtronix.
com网址:电子邮件:support@emtronix.
com.
cnhttp://www.
emtronix.
com028-851400282英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04目录1、C语言入门.
41.
1第一个应用程序.
41.
2建立工程文件51.
3文件读写62、硬件接口驱动程序.
72.
1硬件设置的接口函数定义72.
2硬件接口函数应用例程.
92.
2.
1Watchdog的使用.
92.
2.
2GPIO操作92.
2.
3中断程序.
103、PPP及TCP/IP协议库及其应用143.
1PPPTCP/IP协议库函数原型定义.
143.
2GPRS应用263.
2.
1GPRS自动拨号上网.
263.
2.
2GPRS数据透明传输.
284、串口驱动程序.
324.
1串口驱动API函数324.
2RS232收发演示程序.
344.
3RS485数据收发.
345、LCD汉字显示程序.
365.
1汉字显示接口函数定义.
365.
2汉字显示程序的有关事项385.
3图形方式下汉字和西文显示示例.
38附录1BC31集成开发环境的基本配置41附录2基于ETR186的应用软件开发流程42附录3TDRF及TD调试工具使用说明.
44http://www.
emtronix.
com028-851400283英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
041、C语言入门本节主要是为那些初次接触C语言或对BC开发环境不太熟悉的用户提供的,如果你对此已有一定的了解,可跳过本节.
本节中说明的测试程序,在英创公司提供的光盘中子目录下.
1.
1第一个应用程序作为应用程序设计的第一步,我们将使用BC31集成开发环境,编写一个名为HELLO.
CPP的源程序并把它编译连接成可执行文件HELLO.
EXE:z将你的开发调试主机系统置于DOS提示符并进入你的工作目录下.
z键入命令BC,使系统进入BC集成开发环境,按F3打开一个名为HELLO.
CPP的文件.
这时,系统进入BC编辑环境.
无论用户是否使用BC的C++特性,我们建议用户的文件名都以CPP作为扩展名,这有利于程序的调试.
z通过键盘输入程序如下:#include#include#include#includeintmain(){structtimet;clrscr();//清屏printf("Hello!
\n");for(;;){gettime(&t);printf("%2d:%02d:%02d\r",t.
ti_hour,t.
ti_min,t.
ti_sec);http://www.
emtronix.
com028-851400284英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04if(kbhit())break;}return0;}z按F2键将程序存盘,再按F9对程序进行编译连接,生成EXE可执行文件.
z按ALT+X退出BC集成开发环境.
z在DOS提示符下,键入:td–rphello程序将被自动下载至ETR186下,并弹出源码调试窗口.
z按F9键,程序将运行.
如果接有LCD屏,可在LCD屏上看到"Hello!
"及动态刷新的当前时间串.
z如在ETR186上接有键盘,按任意键程序将退出.
在任意时候,可在PC上按CTRL+BREAK强制中断程序运行.
按ALT+X将退出TD调试状态.
1.
2建立工程文件建立工程文件可把多个程序模块方便地组合在一起进行编译连接,是设计专业程序的基本手段,这主要是因为通过建立工程文件可合理安排程序结构,快速调试程序错误,所以我们建议用户采用工程文件这一工具来设计自己的应用程序.
下面我们将建立一个工程文件MYPRJ.
PRJ,具有.
PRJ的扩展名.
z将你的开发调试主机系统置于DOS提示符下.
z键入命令BC,使系统进入BC集成开发环境,按ALT+P打开一个名为MYPRJ.
PRJ的工程文件.
这时按Insert键,向工程文件中添加TIMESTR.
CPP及HELO.
CPP.
z模块TIMESTR.
CPP定义了一个获取时间串的函数.
z模块HELO.
CPP包含了主函数main(),通过#include"timestr.
h",可以调用TIMESTR.
CPP模块中提供的获取时间串的函数.
z按F2键将程序存盘,再按F9对程序进行编译,自动对工程文件中两个源文件分别进行编译,然后连接,生成MYPRJ.
EXE可执行文件.
z利用TD,可以将MYPRJ.
EXE下载到ETR186下进行调试运行.
http://www.
emtronix.
com028-851400285英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
041.
3文件读写利用操作系统提供的文件系统设计应用程序是嵌入式系统有别于一般单片机系统的一个显著特点.
任何一个文件在使用之前和使用之后,必须要进行打开和关闭,这是因为操作系统对于同时打开的文件数目是有限制的.
因此在使用文件前应打开文件,才可对其中的信息进行存取.
用完之后需要关闭,否则将会出现一些意想不到的错误.
BC提供了打开和关闭文件的函数:fopen()函数和fclose()函数.
在文件打开后,可根据需要调用相应的文件读写函数fread()函数和fwrite()函数.
我们提供的文件操作的例子程序,FILEIO.
PRJ包含了TIMESTR.
CPP和FILEIO.
CPP.
模块TIMESTR.
CPP定义了一个获取时间串的函数.
模块FILEIO.
CPP包含了主函数main(),实现了显示当前时间,并将当前时间转换成文本格式存盘.
在FILEIO.
CPP定义了一个存盘函数,代码主体如下:intSaveFile(char*FileName,char*str){FILE*fp;fp=fopen(FileName,"wt");//打开文件,格式为可写的文本文件if(fp==NULL){printf("CannotOpenthisFile!
\n");return-1;}fprintf(fp,"%s",str);//向文件中写入串fclose(fp);//关闭文件return0;}http://www.
emtronix.
com028-851400286英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
042、硬件接口驱动程序与本节相关的程序在光盘中的目录下.
2.
1硬件设置的接口函数定义ETR186提供了可对低层硬件操作的接口函数,其定义在ETR186.
H中,ETR186.
CPP是对ETR186提供的低层操作C/C++接口函数的实现,各个函数的定义如下:(1)unsignedintGPIODirCfg(unsignedintDir)函数功能描述:设置10位通用数字IO(从D[0]位到D[9]位)的输入输出方向.
D[i]=0:定义为输出;D[i]=1:定义为输入.
D[0]、D[1]……D[9]缺省定义为输入.
输入参数:Dir中为1的位,表示对应的GPIO为输入;否则为输出.
(2)voidGPIOWrite(unsignedintValue)函数功能描述:设置GPIO的输出位电平.
输入参数:Value为输出值.
只有方向设置为输出的,才是有效的.
(3)unsignedintGPIORead()函数功能描述:读取GPIO的输入状态.
输入参数:无返回值:返回值中,只有方向设置为输入的,才是有效的.
(4)unsignedintGPIOSetBit(intBitIdx,intL10)函数功能描述:对通用的数字IO进行一位输出值设置.
输入参数:intBitIdx选择需设置的输出位的序号,其范围是从0…9.
intL10设置的输出值,0或1.
(5)voidGPRS_STB(intL10)函数功能描述:设置GPRS_STB位,GPRS_STB为一位数字输出,可用于启动http://www.
emtronix.
com028-851400287英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04GPRS模块.
另外如果没有GPRS应用,GPRS_STB信号可作为通用数字输入输出来使用.
输入参数:intL10设置的输出值,0或1.
(6)unsignedintGPRS_PWR()函数功能描述:读取GPRS_PWR位状态,GPRS_PWR为数字输入,可用于检查GPRS的上电状态.
另外如果没有GPRS应用,GPRS_PWR信号可以作为通用数字输入来使用.
输入参数:无返回值:0GPRS没有上电1GPRS已经上电(7)voidGPRS_AUX(intL10)函数功能描述:设置GPRS_AUX位,GPRS_STB为一位数字输出,可用于对GPRS模块电源进行管理,L10为0开通GPRS电源,L10为1关闭GPRS电源.
另外如果没有GPRS应用,GPRS_AUX信号可作为通用数字输出来使用.
输入参数:intL10设置的输出值,0或1.
(8)unsignedintNB_Delay(unsignedintmilliseconds)函数功能描述:延时milliseconds毫秒.
可用于替代C函数delay(…).
注意ETR186的定时器结构与标准PC不一致,不能使用delay()来进行延时操作.
(9)unsignedlongNB_clock(unsignedintmilliseconds)函数功能描述:返回系统当前的Tick值.
可用于替代C函数clock(…).
(10)intSetTMR1(unsignedintDivider)http://www.
emtronix.
com028-851400288英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04函数功能描述:设置Timer1时钟的分频数.
ETR186的Timer1输入时钟频率为1MHz.
Timer1为占空比为50%的方波,Divider代表了分频数,如:Divider=20000,则产生周期为20ms的方波.
(11)intSetWDT()函数功能描述:打开Watchdog,时间间隔约为2秒.
注意:由于Watchdog的时间较小,所以在使用的过程中,要进行适时加载.
(12)intReloadWDT()函数功能描述:加载Watchdog(13)intSysReboot()函数功能描述:重新启动系统,相当于PC机的热启动.
2.
2硬件接口函数应用例程2.
2.
1Watchdog的使用用于测试WatchDog函数,WDT.
PRJ由ETR186.
CPP和WDT.
CPP构成,ETR186.
CPP提供低层操作的C/C++接口函数,WDT.
CPP包含了主函数main(),先调用SetWDT()函数启动WatchDog,时间间隔为2.
1秒,在循环中不断调用ReloadWDT()重载watchdog,如果将循环中的延时时间调整超过2.
1秒,系统将被重新启动.
2.
2.
2GPIO操作(1)通用的数字IO实现对10位通用数字IO输入输出操作.
GPIO.
PRJ由ETR186.
CPP和GPIO.
CPP构成,ETR186.
CPP提供低层操作的C/C++接口函数,GPIO.
CPP包含了主函数main(),在main()中通过调用低层的操作函数,首先把GPIO设置为输出,然后设置不同的输出,可通过ETR186评估板上的LED来观察GPIO输出的相应变化,会看到LED灯交替变亮.
例如:GPIODirCFG(0);//设置10位数字IO的方向为输出http://www.
emtronix.
com028-851400289英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04GPIOWrite(0x0155);//设置GPIO奇数5位输出为高,偶数位输出为低NB_Delay(1000);//延时1秒GPIOWrite(0x02aa);//设置GPIO奇数5位输出为低,偶数位输出为高(2)利用GPIO作实时时钟扩展在英创公司提供的评估底板中,用于ETR186提供的SPI接口控制一个串行时钟芯片,使ETR186具有实时时钟的功能,实时时钟的读取和设置函数定义在DS1302.
h、DS1302.
CPP中,这些函数包括有:voidDS1302PortInit()初始化函数,该函数只需调用一次.
intSetdate(structdate*datep)相当于C语言的setdata()函数intGetdate(structdate*datep)相当于C语言的getdata()函数intSettime(structtime*timep)相当于C语言的settime()函数intGettime(structtime*timep)相当于C语言的gettime()函数相应的测试程序为:RTCTST.
PRJ.
注意:i.
如果需要从ETR186中读取和设置实时时钟,请调用DS1302.
h中定义的函数.
ii.
与标准PC一样,ETR186内部带有一个系统时钟,该时钟不具有掉电保护功能.
建议客户在应用程序初始化中,读取RTC的时钟值,并设置到系统时钟.
(3)利用GPIO接矩阵键盘在英创公司提供的评估底板中,利用9位GPIO中的D0—D8可支持接4*5的矩阵键盘.
键盘的驱动程序定义在PC_KEY.
CPP中,PC_KEY.
CPP模块利用C++的构造函数对使用的几位GPIO进行初始化操作以及相关中断的安装,所以用户在使用时只需要将PC_KEY.
CPP包含在PRJ文件中,即可直接调用C函数bioskey()、getch()等进行键盘的操作.
相应的测试程序请参见KEYTST0.
PRJ.
2.
2.
3中断程序ETR186提供三类可调用的中断资源:1)一类是可直接调用的DOS和BIOS的软中断;http://www.
emtronix.
com028-8514002810英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
042)ETR186的精简ISA扩展总线中共有2个中断资源,可用于支持用户扩展的专用硬件单元;3)ETR186单元定时器TMR1主要是用于实现1毫秒至50毫秒间隔的定时中断.
软中断功能一般是通过调用标准C运行库函数来使用的,这里不再赘述.
本节主要介绍用户可直接操作的ETR186硬件中断(包括定时器中断)如下表所示:中断名称中断号中断优先级备注IRQ50x0D5扩展总线外部中断IRQ60x0E5扩展总线外部中断TMR1IRQ---1芯片内部TMR1,ETR186内部定时中断各个中断对应的中断服务程序定义为:voidinterruptIRQ5_ISR(__CPPARGS);voidinterruptIRQ6_ISR(__CPPARGS);voidinterruptTMR1_ISR(__CPPARGS);intInstallISR(intintno);//该函数的功能是置中断.
输入参数为中断号.
intUninstallISR(intintno);//该函数的功能是恢复中断.
本节内容主要介绍这三类中断资源的程序调用方法.
(1)系统定时器与软中断的调用与PC兼容系统定时器一样,ETR186的系统定时器(Timer0)也是每秒中断约18.
2次,既中断周期约为55ms,通常称为一个tick.
为了让应用程序系统定时器执行各种定时任务,每次系统定时中断均会调用软中断int0x1C,这样应用程序可简单的加载软中断0x1C,方便地进行各种定时操作了.
加载定时任务的方法就是直接加载中断0x1C的中断服务程序,而中断0x1C服务程序通常是通过管理存储器变量来达到定时的目的.
voidCaptureTime(){oldhandler=getvect(0x1C);setvect(0x1C,Service);http://www.
emtronix.
com028-8514002811英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04}voidReleaseTime(){setvect(0x1C,oldhandler);}voidinterruptService(__CPPARGS){if(Mask==0){Times++;if(Times==2)Flash(0);if(Times==8){Flash(1);Times=0}}}voidFlash(inttype){if(type==0)LCD_FillBar(cuX,cuY,cuX+7,cuY+1,1);elseLCD_FillBar(cuX,cuY,cuX+7,cuY+1,0);}调用函数CaptureTime(),设置中断0x1C的中断服务程序为Service(),每55ms中断一次,执行该中断服务程序Service(),通过管理变量Times,在屏幕上显示不同的图形,以达到图形光标闪烁的效果.
注意:中断0x1C是以tick(55ms)为节拍工作的,因此定时的最小单位为一个tick,对于更长的定时,可以通过对tick计数来实现,而对于更短时间的定时操作则需要利用系统的Timer1来实现了.
http://www.
emtronix.
com028-8514002812英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04(2)内部定时器中断的使用ETR186内部包含的一个定时器Timer1可供应用程序使用,Timer1的输入时钟为1MHz,可直接调用SetTMR1(unsignedintDivider)函数来设置Timer1的分频数,Timer1的分频输出已接到中断输入TMR1IRQ(内部)以支持定时中断功能.
TMRDEMO.
PRJ工程文件由ETR186.
CPP、TMRISR.
CPP及TMRDEMO.
CPP构成.
ETR186.
CPP定义了低层的接口函数,TMRISR.
CPP提供了定时中断服务程序,TMRDEMO.
CPP包含了主函数main().
TMR1IRQ为内部中断,其时钟输出已接到了相应的中断输入,不需要外接线.
TMRDEMO.
CPP首先设置Timer1输出一个周期为10ms的方波信号(N=10000),设置GPIO为输出模式,然后启动定时中断服务程序.
定时中断服务程序TMTISR.
CPP以toggle方式设置GPIO的输出,并让内部计数值加1.
用户可参见源代码以了解详细的过程.
(3)外部硬件中断的使用在实际应用中,一般使用硬件中断的方法是编写中断服务程序,在程序初始化中安装中断程序,在程序退出时卸载中断程序.
中断服务程序一般通过存储器变量与上层应用程序交换数据.
ISRDEMO.
PRJ工程文件由ETR186.
CPP、TMRISR.
CPP、ISR.
CPP和ISRDEMO.
CPP构成,其中模块ISR.
CPP提供了在扩展总线的3个外部中断函数的编写方法.
我们提供的中断服务程序例子中,定时中断如3.
2节所描述那样工作,把周期(10ms)变化的GPIO通过ETR186评估板连接到2个外部输入上,从而触发外部中断.
外部中断每中断一次,分别对各自的计数值加1,主程序ISRDEMO将在LCD上显示这些计数值.
用户在实际的运用中,可根据需要修改中断服务程序.
http://www.
emtronix.
com028-8514002813英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
043、PPP及TCP/IP协议库及其应用ETR186PPP/TCP/IP通讯软件是一组可在ETR186环境中调用的软件运行函数,通过在ETR186接口实现基于PPP的TCP/IP或UDP/IP协议的通讯功能.
我们提供了一个利用PPP协议的GPRS应用的测试程序.
测试程序放置在光盘中子目录下.
3.
1PPPTCP/IP协议库函数原型定义嵌入式网络模块PPPTCP通讯软件是一组可在英创的嵌入式网络模块环境中调用的软件运行函数,通过在嵌入式网络模块串口COM2实现PPP通讯协议,并进一步实现在其上的TCP/IP协议的通讯功能.
客户的应用程序通过在BC集成编程环境下直接调用嵌入式网络模块PPPTCP通讯软件的各个函数,并把其库函数文件连入客户应用程序的工程文件中,即可实现完整的网络通讯.
为了同时适应在单任务DOS操作系统及RTOS下设计网络通讯程序,英创公司的嵌入式网络模块TCP通讯软件采用直接面对连接的方法构成,并针对工业控制的特点进行了封装,构成了若干个可直接使用函数,使用户能以最快的速度操作使用英创嵌入式网络模块的网络资源.
以下对各个函数作详细介绍:(1)intInitPPPNet(intPortNum=0,char*BAUD=NULL);功能描述:初始化网络接口.
输入参数:intPortNum用于PPP连接的串行端口号,设置为0表示使用COM1;设置为1表示使用COM2.
char*BAUD用于配置PPP连接的串行端口的波特率.
"9600"-----波特率为9600bps"19200"-----波特率为19200bpshttp://www.
emtronix.
com028-8514002814英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04"38400"-----波特率为38400bps"57600"-----波特率为57600bps(缺省配置)"115200"-----波特率为115200bps如BAUD串为空NULL,按缺省的波特率(57600bps)进行配置.
返回值:若正确返回值为0,若初始化失败返回值0,若失败返回值=0表示正确返回,其值为连接号,应用程序操作TCP/IP通讯接口时,都需使用该连接号;若失败返回值0正常返回,返回值为实际读取的字节数;EBADF无效连接号,读取操作未执行.
EWOULDBLOCK对无阻塞方式打开的连接,表示无数据,可重复调用该函数.
ETIMEOUT超时错误,由应用程序决定后续处理.
EMSGSIZE数据太长,表明接收缓冲区太小.
(7)intConnWrite(intconno,char*buff,intlen,intPushFlg=0);功能描述:发送缓冲区中的数据到指定连接号网络接口.
输入参数:intconno连接号.
char*buffchar型指针变量,为存放发送数据的缓冲区buff地址.
intlen缓冲区的字节长度,对TCP连接,最大缓冲区长度应不大于1460字节;对UDP来说,最大缓冲区长度应不大于1472字节.
intPushFlg:http://www.
emtronix.
com028-8514002817英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04=0为普通发送=1为急迫发送,仅对TCP连接有效.
返回值:>=0正常返回,返回值为实际发送的字节数;EBADF无效连接号,发送操作未执行.
ETIMEOUT超时错误,由应用程序决定后续处理.
EMSGSIZE数据太长,发送数据长度超过了内部缓冲区大小.
备注:在普通发送时,如果需要连续发送的数据包小于最大缓冲区长度,而且在连续发送之间没有作相应的延时,TCP/IP则有可能将连续的包作合包处理后发送,以提高网络的传输效率,所以在接收方收到的是已经合过的包.
在众多工业应用中,可以通过设置急迫标志,并在数据包与数据包之间作短暂的延时(如1ms)就可以使接收方收到与发送方一致的包.
从而避免在应用层对TCP数据流进行"断句"分析的麻烦.
(8)intConnIsEstablished(intconno);功能描述:检查连接是否建立.
输入参数:连接号.
返回值:1:连接已建立;0:连接还未建立.
(9)intConnCanSend(intconno,intlen);功能描述:检查是否能发送指定长度的数据.
输入参数:intconno连接号;intlen需发送数据的长度.
返回值:1:接已能发送指定长度的数据;0:连接不能发送指定长度的数据.
http://www.
emtronix.
com028-8514002818英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04(10)intConnHasData(intconno);功能描述:检查是否有数据可读取.
输入参数:连接号.
返回值:1连接已存在可读取的数据;0连接无可读取的数据.
(11)intConnIsFinished(intconno);功能描述:可使用该函数检查该连接的对端是否进行了关闭连接的操作.
若对端已进行了关闭操作,系统应立即调用ConnClose(intconno)关闭该连接.
输入参数:连接号返回值:1连接已关闭;0连接未关闭.
(12)intConnIsFatal(intconno);功能描述:可使用该函数检查连接的状态.
输入参数:连接号返回值:1连接出现异常,如连接复位(RST)或超时.
0连接OK备注:应用程序在调用该函数检查到连接出现了异常,应立即关闭该连接,即连接方停止数据的传输,以释放诸如缓冲区之类的资源.
(13)intGetIP(intconno,unsignedchar*IPCode);功能描述:获取连接对方的IP地址输入参数:intconno由ConnOpen()打开的连接号.
unsignedchar*IPCode获取此连接的对方的IP地址http://www.
emtronix.
com028-8514002819英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04返回值:0远端FTP服务器读取数据的长度http://www.
emtronix.
com028-8514002822英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04(20)intFTP_server(void*pTsk,unsignedlongtimeout,char*FTPusername,char*FTPpassword)功能描述:FTP服务器运行程序,FTP的实现是以非阻塞方式和阻塞方式相结合为特征的,当未与客户端建立连接时,处于非阻塞方式,函数可返回;当与客户端建立连接后,FTP服务器转入阻塞模式,这时需等待FTP请求完成后,函数才会退出.
输入参数:void*pTsk系统保留,总设置为空指针NULL.
unsignedlongtimeout超时时间,单位为毫秒,若FTP服务器在mseconds内未接受任何服务请求,则函数自动退出.
char*FTPusername设置FTP服务器的用户名,若FTPusername为空指针,则采用缺省用户名"guest".
char*FTPpassword设置FTP服务器的密码,若FTPpassword为空指针,则采用缺省密码"888".
返回值:=0等待FTP连接请求,可再次调用该函数.
=1已有FTP连接请求,等待连接建立,需再次调用该函数.
=2FTP连接完成,可再次调用该函数.
(21)voidNetPackagePro()功能描述:处理低层的网络数据包,如广播包、ping包等.
应用程序如果在一段时间内没有操作网络,应调用该函数,使得网络数据包能够得到及时处理,释放网络内部资源,从而避免网络阻塞.
(22)intPing(char*IPStr,unsignedlongMilliseconds)功能描述:采用ICMP协议查询远端的服务器主机是否工作.
http://www.
emtronix.
com028-8514002823英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04输入参数:char*IPStr远端主机的IP地址,如:"192.
168.
201.
121"unsignedlongMilliseconds等待远端服务器主机应答的最长时间,单位为毫秒,时间一般设置在100—3000毫秒之间.
返回值:=0:远端服务器主机有应答,说明远端服务器主机处于运行状态.
!
=0:无相应的服务器主机应答.
(23)intSetReloadWDTInNet(void(*)Reload())功能描述:把WatchDog定时器的加载函数传给网络运行库,使之能在网络函数运行期间及时加载WatchDog.
输入参数:void(*)Reload()WatchDog加载函数指针.
备注:在网络初始化成功后,此函数只需调用一次即可.
(24)intSetupPPPLink(unsignedlongtimeout);功能描述:作为PPP的客户端,启动PPP连接,进行PPP认证,并检查PPP状态.
输入参数:unsignedlongtimeoutPPP客户端启动PPP连接时设定的一个超时时间,时间单位为秒,缺省值为300,即5分钟.
返回值:0PPP打开、认证成功,进入网络层协议状态.
0发送AT指令的长度.
0AT指令的响应值-1没有响应值(31)intSetSerMuxUp();功能描述:安装多路转换协议,并创建3个虚拟逻辑通道.
该函数应在发送"AT+CMUX=0"并返回"OK",延时2秒后调用.
返回值:0安装多路转换协议成功,并成功创建3个虚拟逻辑通道.
Running(),直到该函数返回连接的状态为OPEN.
此时主循环一方面检查网络对端是否有数据,如果有将接收的数据通过RS232发送出去;另一方面检查RS232串口是否接收到数据,如果有将接收到的串口通过TCP连接发送到对端服务中心.
从而实现了RS232和远端数据中心之间的数据透明传输.
同时需要说明的还有,在该例程中,还有一个心跳包的处理,如果在设置的心跳时间内一直没有数据的通讯传输,程序将主动发送一个心跳测试包到远端的服务中心,在该程序中的心跳测试时间设置为400个Tick值,约为20秒.
具体实现的方法请参见该程序代码.
程序测试在进行测试时,和串口相连的设备可是一台PC1机,在该PC机上运行串口调试助手程序(在提供光盘"测试工具"目录下)或者是Windows的超级终端程序;而另一端远端数据中心可在另一台PC2(已连入互联网的PC2)上运行我们公司提供的VC测试程序TCPTest(在提供光盘"测试工具"目录下).
1.
让PC2具有Internet互联网可访问的IP地址,有以下两种方法:1)互联网静态的IP地址.
2)通过ADSL或Modem拨号上的互联网,获取的是动态的互联网IP地址,运行>ipconfig,即可获得其动态IP地址.
2.
配置文件config.
ini介绍在运行GPRS232程序时,须带上配置文件config.
ini,该文件主要用于配置一些通讯参数.
[Config]http://www.
emtronix.
com028-8514002830英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04RemoteIP=61.
157.
22.
196用于定义互联网上需连接的服务器的IP地址(即PC2的互联网IP).
RemotePort=1001用于定义在互联网上远端服务器的端口号.
BaudIdx=12用于定义ETR186和设备(PC1)RS232通讯的波特率.
选择1对应的波特率为115.
2kbps,2对应的波特率为57.
6kbps,3对应的波特率为38.
4kbps,6对应的波特率为19.
2kbps,12对应的波特率为9600bps,以此类推.
3.
"远方服务数据中心"测试程序TCPTest简介TCPTest是运行在PC2上的程序,在运行该程序之前,首先须使PC2连上互联网,PC2上网后,运行TCPTest程序,选择为"服务器"模式,并点击侦听,其中的消息框将处于灰化状态.
如下图:如果ETR186与PC2之间TCP连接建立成功,灰化的消息框将变亮,此时就可通过消息框对ETR186发送字符串,同时接收设备通过ETR186发送的数据.
接收到的数据将显示在接收的消息框内.
http://www.
emtronix.
com028-8514002831英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
044、串口驱动程序ETR186嵌入式串行通讯程序能实现RS232/RS485串行通讯数据的收发,我们提供了两个测试程序.
测试的方法是将测试程序下载到ETR186运行,而另一端在PC机上运行串口调试助手程序或者是windows提供的超级终端程序.
4.
1串口驱动API函数ETR186提供了3个异步串口COM1、COM2、COM3,在缺省状态下COM1串口的最高波特率为115.
2kbps.
其中COM1与PC机的串口完全兼容,IO映射访问.
COM2和COM3来自于RDC1610内部.
为了方便用户掌握串口操作的具体细节,各个串口的低层驱动函数的定义和说明均以源代码的方式提供给客户,共包括6个函数,下面就各个函数的定义作一说明.
这几个函数的定义在RS232X3.
h,函数的说明在RS232X3.
cpp.
(1)intInitUART(intComIdx,intBaudIdx,intParity)功能描述:初始化串口输入参数:ComIdx:串行端口号设置,可选值如下表COMIdx助记符简要说明COM116C550,端口地址为0x3F80COM2来自CPU内部,16C550兼容1COM3来自CPU内部,16C550兼容2BaudIdx:通讯波特率设置,用户可根据需要进行配置,本演示程序中采用值为12(9600bps).
现将常用可选值列于下表,供用户参考:BaudIdx实际设置的波特率1115.
2kbps257.
6kbps338.
4kbps619.
2kbps129600bpshttp://www.
emtronix.
com028-8514002832英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04244800bps482400bps961200bpsParity:用于选择串口通讯的奇偶校验.
0无校验1奇校验2偶校验注:本初始化函数中对数据通讯格式的设置为:8bit,1stop,noParity,用户也可根据自己的需要在源程序中对配置进行必要的调整.
(2)intInstallISR(intComIdx)功能描述:置中断.
输入参数:ComIdx:串行端口号设置,定义同InitUART.
返回参数:0:安装中断成功.
(3)intUninstallISR(intComIdx)功能描述:恢复中断.
输入参数:ComIdx:串行端口号设置,定义同InitUART.
返回参数:0:恢复中断成功.
(4)intPutOutputData(intComIdx,charabyte)功能描述:将待发送数据置入输出数据缓冲区中.
输入参数:ComIdx:串行端口号设置,定义同InitUART.
abyte:待发送数据字节返回参数:http://www.
emtronix.
com028-8514002833英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
040:输出数据缓冲区未满,写数成功.
-1:输出数据缓冲区已满,写数失败.
(5)voidStartSend(intComIdx)功能描述:启动中断,开始数据发送过程输入参数:ComIdx:串行端口号设置,定义同InitUART.
(6)intGetInputData(intComIdx)功能描述:从接收数据缓冲区中取出数据输入参数:ComIdx:串行端口号设置,定义同InitUART.
返回参数:整数:返回接收数据缓冲区中所取整数-1:接收数据缓冲区为空4.
2RS232收发演示程序232DEMO.
PRJ工程文件由232DEMO.
CPP及RS232.
CPP构成.
在232DEMO.
CPP中包含主函数main(),main()首先根据命令参数(端口号)对相应串口进行初始化,开中断,实现数据接收显示及将接收数据向外发送的功能.
程序中,端口号通过命令行参数的形式输入.
如:232DEMOCOM3.
如果是在调试状态下运行,为:td–rp232DEMOCOM3.
由232DEMO.
prj编译连接生成的232DEMO.
exe作为服务器端,它首先响应客户端的接收请求,将客户端发送的数据在显示屏上显示出来,同时又将接收到的数据发送到客户端.
建议客户端执行串口调试助手程序或者windows提供的超级终端程序.
4.
3RS485数据收发RS485的数据收发的低层驱动函数和RS232是完全一致的,所以相关的函数介绍请参见RS232的说明.
RS485和RS232的区别在于RS485是半双工的,所以RS485收发的数据都是以具有一定特征的数据帧为单位的,为了方便测试,在我们提供的程序RS485demo.
prj和Clnt.
prj是以字符"!
"作为一个数据帧的结束标志.
http://www.
emtronix.
com028-8514002834英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04http://www.
emtronix.
com028-8514002835英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
045、LCD汉字显示程序ETR186的一类主要应用是作为智能终端的核心平台,智能终端总是带有一种显示单元.
ETR186作为一种高效、低成本的产品解决方案,专门针对小型的LCD模块(分辨率通常在122*32至320*240)设计了一套通用的汉字及图形显示接口函数.
这些API函数均以源码形式提供,用户不仅可以直接使用,还可根据自身需求进行必要的修改.
819云是我们的老熟人了,服务器一直都是稳定为主,老板人也很好,这次给大家带来了新活动,十分给力 香港CN2 日本CN2 物理机 E5 16G 1T 20M 3IP 240元0官方网站:https://www.819yun.com/ 特惠专员Q:442379204套餐介绍套餐CPU内存硬盘带宽IP价格香港CN2 (特价)E5 随机分配16G1T 机械20M3IP240元/月日本CN2 (...
亚洲云Asiayun怎么样?亚洲云Asiayun好不好?亚洲云成立于2021年,隶属于上海玥悠悠云计算有限公司(Yyyisp),是一家新国人IDC商家,且正规持证IDC/ISP/CDN,商家主要提供数据中心基础服务、互联网业务解决方案,及专属服务器租用、云服务器、云虚拟主机、专属服务器托管、带宽租用等产品和服务。Asiayun提供源自大陆、香港、韩国和美国等地骨干级机房优质资源,包括B...
搬瓦工怎么样?2021年7月最新vps套餐推荐及搬瓦工优惠码整理,搬瓦工优惠码可以在购买的时候获取一些优惠,一般来说力度都在 6% 左右。本文整理一下 2021 年 7 月最新的搬瓦工优惠码,目前折扣力度最大是 6.58%,并且是循环折扣,续费有效,可以一直享受优惠价格续费的。搬瓦工优惠码基本上可能每年才会更新一次,大家可以收藏本文,会保持搬瓦工最新优惠码更新的。点击进入:搬瓦工最新官方网站搬瓦工...