1553B通讯软件设计RT客户端

来源:互联网 发布:影视特效飞天软件 编辑:程序博客网 时间:2024/06/06 10:46

作为1553B总线通讯软件,软件主要目的就是控制总线控制器BC和远程终端RT之间的数据交换。

本实验所用的板卡为EXC—PCI/MCH-1,相关资料可在官网下载:http://www.mil-1553.com。

//1553B_RT.CPP#include <iostream>using namespace std;#include <stdio.h>#include <conio.h>/***API函数头文件包含***/#include "Proto_mch.h"#include "deviceio.h"#include "error_devio.h"#include "Error_mch.h"#include "exc4000.h"#include "excdef.h"#include "excsysio.h"#include "flags_mch.h"#include "Instance_mch.h"#include "mchIncl.h"#include "mem_mch.h"#include "Proto_mch.h"#include "Proto_mch_back.h"usint ttag;DWORD MuxIsr(int param);unsigned int numints=0, oldnumints = -1;int handle;BYTE shadowByte;ULONG uInterruptsTotal, uInterrupts[8];/*******1553B——RT客户端主程序********/int main(){HANDLE hThreadMuxIsr;      // Thread commIsr handleDWORD  threadIdMuxIsr;      // ID of thread commIsrWORD rtdatablk[32] ={0x1111,0x2222,0x3333};//RT待接收数据WORD dataoutblk[32]={0x1111,0x2222,0x3333};//RT待发送数据WORD * rtdata=rtdatablk;      //RT待接收数组指针WORD * dataout=dataoutblk;   //RT待发送数组指针int Send_wdcnt=3;             //发送数据个数int Recv_wdcnt=3;             //接收数据个数char errstr[255];             //错误信息字符usint device_num=29;          //板卡通道:MCH-1usint module_num=0;           //板卡模块short mode=RT_MODE_MCH;       //板卡工作模式:RTint handle=Init_Module_MCH(device_num,module_num);//初始化if(handle<0){    Get_Error_String_MCH(handle, 255, errstr);    cout<<"Error:"<<errstr<<endl;//MFC转换为弹窗显示    getchar();//回车键退出程序    exit(0);//退出程序}Set_Mode_MCH(handle,mode);    //工作模式设置Set_RT_Num_MCH(handle, 1);    //设置RT地址:1Set_Subaddr_Int_MCH(handle, 1,RECEIVE,STANDARD_CMD,ACCESS); //设RT1_1收数据Set_Subaddr_Int_MCH(handle, 2,TRANSMIT,STANDARD_CMD,ACCESS);//设RT1_2发数据Load_Datablk_MCH (handle,2,Send_wdcnt,dataout);//载入数据到RT1_2Set_Interrupt_Mask_MCH(handle, SUBAD);//允许中断Run_RT_MCH(handle);hThreadMuxIsr = CreateThread(NULL, 0,     (LPTHREAD_START_ROUTINE)MuxIsr, (LPVOID) 1,      CREATE_SUSPENDED, &threadIdMuxIsr);//创建线程if ((hThreadMuxIsr== NULL)){   // failed to create some threadcout<<"Error on thread creation:"<<GetLastError()<<endl;Release_Module_MCH(handle);getchar();exit(-1);}ResumeThread(hThreadMuxIsr);// Start up the threadswhile (1){if (numints != oldnumints){oldnumints = numints;Read_Datablk_MCH (handle,1,Recv_wdcnt,rtdata,STANDARD_CMD,RECEIVE);cout<<rtdatablk[0]<<"_"<<rtdatablk[1]<<"_"<<rtdatablk[2] <<endl;//接收数据显示}if (kbhit()){TerminateThread(hThreadMuxIsr, 0);getchar();break;}}Stop_Card_MCH(handle);     //停止板卡运行函数Release_Module_MCH(handle);//释放板卡资源函数getchar();    return 0;}DWORD MuxIsr(int param){WORD rcvbuf[34];while (param)    /* use param for TRUE */{Wait_For_Interrupt_MCH(handle, INFINITE);numints++;Peek_Register_MCH(handle, 0xe/2, &ttag);/* get the data from subaddress 2 of the receiver */Read_Datablk_MCH (handle, 1, 0, rcvbuf,STANDARD_CMD, RECEIVE);}return(0);}


0 0
原创粉丝点击