gis1117
  • 注册日期
  • 发帖数
  • QQ
  • 铜币
  • 威望
  • 贡献值
  • 银元
阅读:1009回复:0

利用IAC功能实现移动目标动态监测的方法

楼主#
更多 发布于:2003-11-19 11:30
下面是一个利用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>等待有趣的事情发生。  

喜欢0 评分0
游客

返回顶部