// test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "windows.h" #include "../sli6_ext.h" #include #include #include #include extern CHAR SLI6_ErrorString[1024]; extern unsigned long sum; void intf(int,PVOID param); //void intf2(int,PVOID param); long intn; int main(int argc, char* argv[]) { printf("Test opsli.lib\n"); int CN1,CN2; // открытие крейтов //if((CN1 = OpenCrate(1,1)) == -1) printf("error open crate 1"); if((CN2 = OpenCrate(1,2)) == -1) printf("error open crate 2"); // 2 - номер канала! // работа с крейтами unsigned short data16 = 0xFFFF; unsigned short datar16 = 0x0; unsigned short data = 0x0; unsigned int status = 0x0; // while(1) for(unsigned short i=0; i < 0xFFFF; i++) { cam16write(CN2,13,0,&i); cam16read(CN2,13,0,&data); if(data!=i) printf("i = %d data = %d\n",i,data); } // return 0; /* // запись данных в канал CN1,N=1,A=0 status = cam16(CN1,1,0,16,&data16); if(status == -1) { // ошибка printf("%s",SLI6_ErrorString); } // эквивалент предыдущей команды, только быстрее status = cam16write(CN1,1,0,&data16); if(status == -1) { // ошибка printf("%s",SLI6_ErrorString); } // чтение данных из канала CN1,N=1,A=0 status = cam16(CN1,1,0,0,&datar16); if(status == -1) { // ошибка printf("%s",SLI6_ErrorString); } // эквивалент предыдущей команды, только быстрее status = cam16read(CN1,1,0,&datar16); if(status == -1) { // ошибка printf("%s",SLI6_ErrorString); } printf("datar = %0x\n",datar16); unsigned long data24 = 0xFFFFFF; // чтение данных из канала CN1,N=1,A=0 status = cam24read(CN1,1,0,&data24); if(status == -1) { // ошибка printf("%s",SLI6_ErrorString); } // for(unsigned long d=0x0; d <= 0xFFFFFF; d++) // cam24write(CN1,1,0,&d); */ /* /////////// прерывания //////////////// printf("0 InterrupEnabled = %d\n",LAMIntIsEnabled(CN1)); printf("Error string: %s\n",SLI6_ErrorString); unsigned short maska = 0xF; // регистр маски и запросов cam16write(CN1,0,1,&maska); // статусный регистр контроллера cam16read(CN1,0,0,&datar16); datar16 |= 0x40; cam16write(CN1,0,0,&datar16); // установка функции обработчика SetIntOnLAMfunc(CN1,intf); printf("1 InterrupEnabled = %d\n",LAMIntIsEnabled(CN1)); printf("Error string: %s\n",SLI6_ErrorString); // влючение прерываний LAMIntEnable(CN1,NULL); printf("2 InterrupEnabled = %d\n",LAMIntIsEnabled(CN1)); printf("Error string: %s\n",SLI6_ErrorString); Sleep(30000); LAMIntDisable(CN1); printf("3 InterrupEnabled = %d\n",LAMIntIsEnabled(CN1)); printf("Error string: %s\n",SLI6_ErrorString); /////////////////////////////////////// */ /////////// прерывания //////////////// printf("0 InterrupEnabled = %d\n",LAMIntIsEnabled(CN2)); printf("Error string: %s\n",SLI6_ErrorString); unsigned short maska = 0xFF; // регистр маски и запросов cam16write(CN2,0,1,&maska); // статусный регистр контроллера cam16read(CN2,0,0,&datar16); datar16 |= 0x40; cam16write(CN2,0,0,&datar16); // установка функции обработчика SetIntOnLAMfunc(CN2,intf); printf("1 InterrupEnabled = %d\n",LAMIntIsEnabled(CN2)); printf("Error string: %s\n",SLI6_ErrorString); // включение прерываний LAMIntEnable(CN2,NULL); printf("2 InterrupEnabled = %d\n",LAMIntIsEnabled(CN2)); printf("Error string: %s\n",SLI6_ErrorString); //////////////////////////////////////////////////////////// int l=0; while(l<100) { for(unsigned short i=0; i < 0xFFFF; i++) { cam16write(CN2,13,0,&i); // 13-позиция индикатора магистрали cam16read(CN2,13,0,&data16); if(data16!=i) printf("i = %d data16 = %d",i,data16); } l++; } printf("intn = %d\n",intn); //printf("sum = 0x%X\n",sum); /* for(i=0xFF; i < 0xFFFF; i++) { cam16write(CN2,13,0,&i); // cam16read(CN2,13,0,&data16); // if(data16!=i) printf("i = %d data16 = %d",i,data16); } */ printf("3 InterrupEnabled = %d\n",LAMIntIsEnabled(CN2)); // cam16write(CN2,13,0,&datar16); // cam16read(CN2,13,0,&datar16); Sleep(300000); LAMIntDisable(CN2); printf("3 InterrupEnabled = %d\n",LAMIntIsEnabled(CN2)); printf("Error string: %s\n",SLI6_ErrorString); /////////////////////////////////////// // CloseCrate(CN1); CloseCrate(CN2); return 0; } void intf(int CN,PVOID param) { // intn++;LAMIntEnable(CN,NULL); printf("Interrupt from %0x channel! %d\n",(CN & 0x0000FFFF),intn++); if(LAMIntEnable(CN,NULL) == -1) printf("error LAM! \n%s",SLI6_ErrorString); //printf("END\n"); } /* void intf2(int CN,PVOID param) { printf("Interrupt from %0x channel!",(CN & 0x0000FFFF)); if(LAMIntEnable(CN,NULL) == -1) printf("error LAM! \n%s",SLI6_ErrorString); printf("\nEND\n"); }*/