MBPLC的中断包括秒中断、分同步中断、CAN网中断以及BSP级的以太网中断、硬盘中断等等。下面以秒中断(中断级别为5)为例说明中断的使用方法:

ntConnect(INUM_TO_IVEC(INT_VEC_GET(5)), SECISR, 0);

sysIntEnablePIC(5);

这两个函数用于将中断处理程序SECISR()与秒中断相关联,存放于中断向量表的对应表项中,当秒中断事件出现时,VxWorks内核将调用中断处理程序。这时可利用中断处理程序释放一个信号量(通过semGive()函数),通过该信号量驱动相应的数据处理模块(通过sem- Take()函数),从而实现实时操作。

此外,我们还使用intLock()函数和intUnlock()函数来设置中断屏蔽,用以保证受保护的代码在执行过程中不受中断的干扰。

3.4 网络通信

网络通信一般可通过套接口(socket)实现。Vx- Works提供了标准的BSD socket调用,具有两种类型:Stream socket(全双工流类型)、Datagram socket(数据报类型)。前者支持TCP协议,后者支持UDP协议。任何一个任务都可以打开一或多个socket,其它任务的socket可与之连接。

客户端程序首先调用socket()函数产生用于与各分系统连接的套接字,然后初始化一个套接口结构体,为其赋上服务端的IP地址和端口号,并将其作为函数connect()的参数,调用connect()函数主动去连接服务器端。连接成功后,用send()和recv()函数读写数据,直到全部数据都交换完,再用close()函数关闭套接口。

服务器端也先用socket()函数建立套接口,再调用bind()函数将自身IP和端口号绑定,以保证客户端正确识别,然后用listen()函数指明已准备好接受来自客户端的连接,又用accpet()函数接受一个连接请求,接受后用send()和recv()函数来传输数据,直到全部数据都交换完,再用close()函数关闭套接口。为了确保服务器能够实时接收客户端的数据,当服务端与客户端建立连接之后,必须嵌入循环,利用recv()函数不断等待客户数据。同时客户端每次发送数据之后也应等待服务端回复,建立握手机制。

  • UC3846控制芯片工作原理控制图 逆变焊机原理与用途
  • 数字万用表电阻档测试二极管正反向没有阻值(使用万用表测量二极管的正向电阻,为什么各档)
  • 学单片机需要学数电模电吗(学单片机要先学数电模电吗)
  • 电工怎么选择适合自己用的万用表(电工初学者买什么样的万用表好)
  • 单片机需要同时运行多个任务怎么办(单片机怎么同时执行多个任务)
  • 电机保护的方案取决于负载的机械特性
  • 绝缘电阻表正负搭接不复零位是怎么回事
  • 短路怎么用万用表查