函数自动拨号上网
自动拨号上网 时间:2021-05-23 阅读:(
)
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个虚拟逻辑通道.
自动拨号上网GPRSTST实现了GPRS自动拨号上网的功能,该程序运行后,如果LCD屏上显示"IP=即表示GPRS拨号上网成功.
GPRSTST.
PRJ工程文件包含以下文件:http://www.
emtronix.
com028-8514002826英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04ETR_PPP.
LIB提供PPPTCP/IP协议的接口函数ETR186.
CPP提供ETR186硬件接口函数GPRS.
CPP提供了进行GPRS自动拨号上网的函数GPRSTST.
CPPPRJ文件的主函数下面重点介绍GPRS.
CPP模块所实现的功能.
利用GPRS无线上网有以下几个步骤:1)GPRS无线模块上电;2)通过发送AT指令与中国移动网的节点服务器建立连接;3)在连接建立后,进行相应的PPP配置,PPP配置成功后,即可获得节点服务器配置IP地址,进行网络通讯了.
为了方便用户的使用,我们对GPRS无线上网的这几个步骤进行封装,其中利用C语言的功能强大的函数指针变量以及有限状态机的处理机制,提供给用户一个单一的函数PPP_Running(),该函数每执行一个步骤就退出,并返回当前的状态,以便于应用程序的设计.
该函数实现的功能包括GPRS自动拨号上网,上网后若出现断线,PPP链接重新建立,以保证设备一直在线.
用户只需根据函数的返回值来判断GPRS是否上网,以便于应用程序进行所需的TCP/IP通讯.
函数的定义包含在GPRS.
H中,在GPRS.
CPP中实现.
GPRS.
H中定义了两个函数:PPPGPRSStatePPP_Running()功能描述:实现GPRS自动拨号上网,不断调用该函数,可保证GPRS一直在线.
返回值:返回进行GPRS拨号上网状态.
0:GPRS模块上电操作1:初始化PPP网络相关参数.
2:发送"ATE0"指令操作.
3:发送"AT+CGATT"指令,用于检查模块是否附着到GPRS网络4:发送"AT+CGATT=1"指令,用于设置模块附着到GPRS网络5:发送"AT+CGDCONT=1,"IP","CMNET"",设置GPRS通讯参数.
6:发送"ATD*99***1#",拨号到GPRS节点服务器.
7:进行PPP配置、协商.
8:表明GPRS上网、PPP配置成功,应用程序可进行TCP/IP通讯.
9:断开GPRS网络,关闭PPP网络,同时关闭了GPRS模块电源.
voidPPP_ReStart()http://www.
emtronix.
com028-8514002827英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04功能描述:重新启动PPP配置.
该函数主要针对在进行TCP/IP数据通讯过程中出现异常时的应用,可通过调用该函数重新启动GPRS操作.
返回值:无.
GPRSTST程序在运行时,将在LCD屏上显示"RIdx=",根据这个序号对应以上的说明,用户可判断GPRS拨号上网的状态,直到LCD屏上显示"IP=表明GPRS拨号上网成功.
3.
2.
2GPRS数据透明传输程序介绍程序GPRS232实现了通过串口数据和远方数据中心之间的透明传输.
GPRS232.
PRJ文件包括有以下模块:ETR_PPP.
LIB提供PPPTCP/IP协议的接口函数ETR186.
CPP提供ETR186硬件接口函数READINI.
CPP提供从配置文件中读取参数接口函数GPRS.
CPP提供了进行GPRS自动拨号上网的函数TCPCLNT.
CPP提供打开、建立TCP连接的管理程序RS232X3.
CPP提供ETR186串口驱动程序GPRS232.
CPPPRJ文件的主循环GPRS.
CPP模块已经在上一节中作了详细的介绍,这里主要介绍TPCLNT.
CPP和GPRS232.
CPP.
在TCPCLNT.
CPP中,其通讯方式是以客户端方式(或称主动方式)打开TCP连接,并等待连接建立,并提供相应的读写数据的接口函数.
在该模块中定义了一个TCPClient的类,来实现以上功能.
采用C++的类来设计程序有助于得到更加稳定的程序结构.
classTCPClient类中定义了连接的三种状态:CLOSED表示关闭、START表示连接打开、OPEN表示连接已经建立.
提供的公共函数有:voidInit(structSERVER_ID*pSvrID);功能描述:带入初始化参数,即通过结构参数pSvrID设置远端数据中的IP地址和端口号.
intSetTimeoutCnt(longNumTick);功能描述:http://www.
emtronix.
com028-8514002828英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04用于设置timeout的时间,其参数NumTick为设置超时时间的Tick值,1个Tick值约为55ms,如果NumTick则表明不用设置超时.
intIsTimeout();功能描述:检查是否超时,函数返回1表明已经超时,返回0没有超时.
CONN_STATERunning();功能描述:作为TCPCliend的主要运行函数.
包括三项处理:1)连接处于CLOSED状态,则打开一个新的连接,连接打开成功后,其状态由CLOSED转换到START.
2)连接处于START状态,则检查连接是否建立,同时检查超时时间,如果连接建立,其状态由START转换到OPEN;如果时间超时连接还未建立,则关闭连接,状态又回到CLOSED.
3)连接处于OPEN状态,则检查连接是否有异常,或是被对方关闭,如果没有检查到则一直保持OPEN状态,否则将关闭TCP连接,其状态回到CLOSED.
该函数返回TCP连接的状态.
intWriteData(char*DatBuf,intDatLen)功能描述:通过TCP连接进行发送数据.
该函数对于连接状态处于OPEN时才有效.
intReadData(char*DatBuf,intDatLen)功能描述:检查TCP连接是否收到数据.
该函数对于连接状态处于OPEN时才有效.
http://www.
emtronix.
com028-8514002829英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04intClose();功能描述:关闭已打开的连接.
GPRS232.
CPP定义了该工程文件的主循环,利用各个模块所提供的接口函数,可进行GPRS自动拨号上网,和远端网络数据中心建立TCP连接,以实现数据透明传输的功能.
在该模块程序中,1)第一步进行的是初始化操作,包括从配置文件中读取配置参数,以及对串口的初始化操作等;2)进入程序的主循环,首先调用PPP_Running()自动进行GPRS拨号上网操作,直到该函数返回PPP的状态值为PPPLINKUP,表明GPRS拨号上网已成功.
循环再进入到下一步操作,和远端服务中心建立TCP的连接,直接调用TCPManager->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函数均以源码形式提供,用户不仅可以直接使用,还可根据自身需求进行必要的修改.
关于LCD汉字驱动及相应的测试程序在光盘中目录下.
5.
1汉字显示接口函数定义ETR186的LCD汉字显示API共包括7个函数,以及一个从CPP文件中提取汉字字模的工具程序source.
exe(源码在source.
cpp中).
这些函数的详细定义如下:(1)intLCD_Init(char*CHN_FntFile,char*ASCII_FntFile)功能描述:对LCD进行图形方式初始化,并加载汉字和西文字符字库.
输入参数:char*CHN_FntFile:汉字字库文件名,我们提供的汉字字库文件mlib.
chrchar*ASCII_FntFile:ASCII码文件名,我们提供的ASCII码库文件ascii.
chr(2)intLCD_Clearup()功能描述:在图形方式下对LCD进行清屏处理.
输入参数:无(3)intLCD_SetMode(intMode)功能描述:设置LCD的显示模式.
输入参数:intMode:0表示copy方式显示模式1表示xor方式显示模式(4)intLCD_PutPixel(intx0,inty0,intcolor);功能描述:在图形方式下进行描点.
输入参数:intx0:点的列坐标,范围0~127(或0-319),不可大于或等于128(或320)inty0:点的行坐标,范围0~63(或0-239),不可大于或等于64(或240)http://www.
emtronix.
com028-8514002836英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04intcolor:颜色设置,0(不显示)或者1(显示).
(5)intLCD_DrawLine(intx0,inty0,intx1,inty1,intcolor);功能描述:在图形方式下进行画直线输入参数:x0:直线开始列坐标,范围0~127(或0-319),不可大于或等于128(或320)y0:直线开始行坐标,范围0~63(或0-239),不可大于或等于64(或240)x1:直线结束列坐标,范围0~127(或0-319),不可大于或等于128(或320)y1:直线结束行坐标,范围0~63(或0-239),不可大于或等于64(或240)color:颜色设置,0或者1.
(6)intLCD_FillBar(intx0,inty0,intx1,inty1,intcolor);功能描述:在图形方式下画Bar条.
输入参数:x0:Bar开始列坐标,范围0~127(或0-319),不可大于或等于128(或320)y0:Bar开始行坐标,范围0~63(或0-239),不可大于或等于64(或240)x1:Bar结束列坐标,范围0~127(或0-319),不可大于或等于128(或320)y1:Bar结束行坐标,范围0~63(或0-239),不可大于或等于64(或240)color:颜色设置,0或者1.
(7)intLCD_WriteString(intx0,inty0,char*pStr,intcolor,intlen=0);功能描述:在图形方式下写字符串(中文或西文字符).
输入参数:x0:字符输入列坐标,范围0~127(或0-319),不可大于或等于128(或320)y0:字符输入行坐标,范围0~63(或0-239),不可大于或等于64(或240)*pStr:需显示的字符串color:字符颜色设置,0或1len:字符显示长度,缺省设为0,表示按str实际长度显示;否则按lengthhttp://www.
emtronix.
com028-8514002837英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04定义的长度显示.
5.
2汉字显示程序的有关事项1.
在BC集成环境(IDE)下建立包含由英创公司提供的LCD低层驱动模块(如HD61202.
cpp、SED1335.
cpp等)、Dotlib.
cpp、Lcd_api.
cpp及其他应用模块的工程文件,在需要的场合调用相关的图形操作函数或汉字显示函数.
最后编译连接形成可执行文件(.
EXE).
2.
汉字字模mlib.
chr可以通过我们提供的source.
exe搜索生成,直接编译source.
cpp文件即可生成source.
exe运行文件.
source文件在运行时,需带上参数,参数为需搜索的cpp文件名.
如:>sourcetst1.
cpp搜索tst1.
cpp中的汉字,生成新的汉字库mlib.
chr,同时生成新的头文件source.
h.
此时需再重新编译工程文件,最后连接形成与用户应用相关的可执行文件.
如果从多个CPP文件提取汉字,则执行source*.
cpp.
注意不要把source.
cpp放在应用程序同一个目录,以免把source.
cpp中的汉字也搜索进去.
3.
mlib.
chr最多只能包含512个汉字.
需要全汉字的应用,则需要把整个汉字字模文件加载到ETR186的高端存储器中,有关这方面的问题,请与英创公司技术支持部门联系.
4.
显示中西文必须使用工具软件tdrf把mlib.
chr和ascii.
chr先拷贝入ETR186的运行盘中(B:\或C:\),然后程序才能正常运行.
5.
建议客户的应用程序,不用汉字来写注释,以保证mlib.
chr包含的都是有效汉字字模.
5.
3图形方式下汉字和西文显示示例#include#include#include#include#include"lcd_api.
h"http://www.
emtronix.
com028-8514002838英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04voidmain(){intx,y;clrscr();//清屏printf("\nDOTLCDDemo\n");//gotograghicmodeLCD_Init("mlib.
chr","ascii.
chr");//打开LCD图形显示模式,并加载字模文件LCD_SetMode(1);//settoXORmode//showchinesecharatcenterpositioncharBufStr[20];strcpy(BufStr,"**欢迎测试**");x=(128-strlen(BufStr)*8)/2;y=8;LCD_WriteString(x,y,BufStr,1);//图形方式下显示西文或中文字符strcpy(BufStr,"嵌入式网络模块");x=(128-strlen(BufStr)*8)/2;y=24;LCD_WriteString(x,y,BufStr,0);//图形方式下显示西文或中文字符//drawlinesLCD_DrawLine(0,42,127,42,1);LCD_DrawLine(0,63,127,63,1);//图形方式画直线//drawcurvefor(x=0;xBC第2步建立工程(Project)文件,在Prj工程文件中主要是定义系统的各软件模块.
Prj工程文件,可根据设计需求随时进行修改.
第3步编写各软件模块,即常规的程序设计.
在BC的集成环境下,用户即可采用C/C++这样的高级语言设计程序,也可用x86的汇编来设计关键模块,如硬件驱动程序、中断服务程序等.
第4步对编写好的程序进行编译(Compiler)、汇编(Assembler)、连接(Linker),若程序有错,集成环境将提示错误信息,用户可根据错误信息返回第2步进行修改,直至生成可执行文件(如userapp.
exe).
第5步运行调试程序,对第4步生成的用户应用程序进行调试,典型命令如下:C:\Myapp>td–rpuserappTD具有自动下载应用程序至目标系统的功能.
TD是一个功能强大的源级程序调试工具,基本界面如下:若调试发现错误,可方便退出调试,返回第2步进行修改,直至整个程序完整调试.
第6步调试完成即意味着程序开发的结束,用户可把ETR186设置成直接运行模式,即可让系统独立运行.
http://www.
emtronix.
com028-8514002843英创信息技术有限公司ETR186嵌入式网络模块编程手册V5.
04附录3TDRF及TD调试工具使用说明TDRF是一个简易的基于RS232的远程文件访问工具软件.
基本使用方法如下:TDRF[选项]命令[参数]其中的选项有:-rp设置HOST的调试串行端口号,rp1=COM1;rp2=COM2.
-rs设置串行波特率,rs1=9600bps;rs2=19kbps;rs3=38kbps;rs4=115kbps.
缺省选项为:-rp1-rs4,即COM1,115k波特率.
"命令"为类似DOS命令的英文单词或单个缩写字母,与DOS命令类似,跟在dir、copy、del、copyfrom命令后的参数可采用"*"表示任意文件名或扩展名.
TDRF的主要命令有:命令缩写参数数目描述CopyT1或2拷贝HOST文件至ETR1861或2拷贝ETR186中的文件至HOSTCopyfromFDel,Erase删除ETR186A盘或C盘中的文件E1DirD0或1显示ETR186中的文件目录重命名ETR186中的文件RenR2在ETR186中建立新目录MdM1RdK1删除ETR186A盘或C盘中已存在的目录CdC0或1改变ETR186的当前目录TD即TurboDebugger是一个功能强大的源程序调试工具,在基于ETR186的应用开发中,可采用TD作为基本的交叉调试工具.
具体方法为:把ETR186的RS232调试端口与用于软件开发的PC的一个RS232端口(COM1或COM2)相连,一般在编写应用程序的当前目录启动TD,如:C:\MyApp>TD–rp#Userapp其中-rp#用于指定PC的调试端口,-rp1=COM1,也可简写成-rp;-rp2=COM2.
运行TD时,用户编写的应用程序(如Userapp.
exe)将首先被下载至ETR186的当前目录,然后应用程序自动启动,进入调试状态,相应的用户PC的屏幕上会显示应用程序的main模块的源代码,如附录5中的图所示.
这时就可进行各种程序调试了.
http://www.
emtronix.
com028-8514002844
目前国内云计算市场竞争异常激烈,尤其是国内的腾讯云、阿里云、景安等商家促销活动一波接一波的进行,对于有需要的用户确实得到不小的实惠。但是这样给予国内的主机商确实是比较大的打击,毕竟这些商家的背景和实例强劲,即便是贴本补贴优惠,也是不怕的。前两年阿里一家各种活动促销,确实在国内市场占据主要的市场地位,腾讯云开始两年没有较大的吸引用户,不过这两年的发展还是比较稳健的。我们很多网友在之前肯定也享受到一些...
7月4日是美国独立日,大致就是国庆节的意思吧。hostodo今年提前搞了个VPS大促销活动,4款便宜VPS,相当于7折,续费不涨价,本次促销不定时,不知道有多少货,卖完为止。VPS基于KVM虚拟,NVMe阵列,1Gbps带宽,自带一个IPv4+/64 IPv6,solusvm管理,送收费版DirectAdmin授权,VPS在用就有效! 官方网站:https://www.hostodo.com ...
提速啦的来历提速啦是 网站 本着“良心 便宜 稳定”的初衷 为小白用户避免被坑 由赣州王成璟网络科技有限公司旗下赣州提速啦网络科技有限公司运营 投资1000万人民币 在美国Cera 香港CTG 香港Cera 国内 杭州 宿迁 浙江 赣州 南昌 大连 辽宁 扬州 等地区建立数据中心 正规持有IDC ISP CDN 云牌照 公司。公司购买产品支持3天内退款 超过3天步退款政策。提速啦的市场定位提速啦主...
自动拨号上网为你推荐
平板ipadcyclesios8支持ipad支持ipad支持ipad支持ipadiphone连不上wifi苹果8p连接不了WiFifusionchartsfusioncharts怎么生成图片至exceliphonewifi苹果手机怎么wi-fi共享googleadsense10分钟申请Google Adsense是一种怎样的体验
美国vps评测 vir mach5 域名优惠码 轻博客 英文简历模板word 好看的留言 太原联通测速平台 vip购优汇 韩国名字大全 国外代理服务器软件 100m独享 umax120 gtt 如何安装服务器系统 空间登入 wordpress中文主题 空间服务器 phpinfo apache启动失败 更多