阅读:1009回复:0
利用IAC功能实现移动目标动态监测的方法
下面是一个利用IAC功能实现移动目标动态监测的例子。这个例子利用一个C程序监测新的坐标数据,并通过IAC将数据送给ARC/INFO(7.0以上版本)用于标记符号。在这个例子中,ARC/INFO只有在接收到C程序传来的数据并在图上标记符号的一瞬间是忙的,而其他时间ARC/INFO处于空闲状态,用户可以进行任何操作。
<1> C语言源程序: gpssim.c #include<stdio.h> #include<string.h> void main() { int server-num, status, k; float x,y; char ReturnString[80]; char CommandString[1024]; float Time_limit=1000; unsigned long int version_num=1; /*Version no:*/ unsigned ling int program_num=0x40000000; /*Program no:*/ /*connect to arc/info at Host:"tiger" */ server-num = aiconnect("tiger",program_num,version_num); if (server_num < 0) { fprintf(stderr,"\nError:Unable to connect to server tiger.\n"); exit(1); } /*read x y from serial port */ ReadSerialPort(x,y); /*ReadSerialPort()由用户自定义,用于从串口或文件读取坐标数据,再存到x y 变量中去。*/ while(true) { printf("Sending to server ARC/INFO...\n"); printf("x=%f; y=%f\n", x,y); /*convert a commend(with variables)into a string */ sprintf(CommandString,"&r receivgps %f %f",x,y); /* send the commend to ARC/INFO */ status=airequest(server_num, 1, CommandString, ReturnString, Time_limit); printf("Server returns: %s\n",ReturnString); ReadSerialPort(x,y); } } <2> 在ARC/INFO中输入: ARC: &type [iacopen] 将得到类似下列的参数: Host: tiger Program no:40000000 Version no:1 根据所得到的参数,对上面C程序进行相应改动,然后用下面命令编译C程序: cc gpssim.c $ARCHOME/aiclient/aiclient.o -o gpssim <3> 编辑一个AML程序: receivgps.aml &args x y units map &type received from gps x=%x% y=%y% marker %x% %y% &return <4>在一个窗口中启动ARC/INFO,进入ARCPLOT,显示相应地图,输入: &type[iacopen] <5>在另一个窗口中运行gpssim程序。 <6>等待有趣的事情发生。 |
|