⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 util7248.c

📁 凌华工控控制卡PCI-7248使用例子
💻 C
📖 第 1 页 / 共 2 页
字号:
/*;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;  Copyright (c) 1995-1999, ADLink Technology Inc.  All rights reserved.  ;;
;;                                                                         ;;
;;      File Name   :   UTIL7248.C                                         ;;
;;      Purpose     :   This PCI-DASK sample program demonstrate how to    ;;
;;                      operate  DI & DO	for PCI-7248				   ;;
;;      Date        :   07/20/1999                                         ;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;*/

#include "windows.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>
#include "Dask.h"
#include "resource.h"

#define IDM_EXIT        110
#define TIMER             2

int PASCAL      WinMain(HANDLE, HANDLE, LPSTR, int);
long  PASCAL MainWndProc(HWND, UINT, WPARAM, LPARAM);

HANDLE  hInst;
HWND hAddrComboBox;
I16 card=-1, card_number = 0;

U32 inputA[2], inputB[2], inputC[2] , inputD[2];
U32 outputA[2],outputB[2],outputC[2] ,outputD[2];
U32 oldinputA[2],  oldinputB[2], oldinputC[2] , oldinputD[2]; 
U32 temp_output;

HBRUSH  hLTGreenBrush,hGreenBrush,hBlueBrush,hYellowBrush,hRedBrush;

int port_a[2];
int port_b[2];
int port_c_upper[2];
int port_c_lower[2]; 

                    
POINT input_pos[2][8];
POINT output_pos[2][8];                              
POINT io_pos[2][8];        
                           
BOOL InitApplication(HANDLE);
BOOL InitInstance(HANDLE, int);                           

int PASCAL WinMain(hInstance, hPrevInstance, lpCmdLine, nCmdShow)
HANDLE hInstance, hPrevInstance;
LPSTR lpCmdLine;
int nCmdShow;
{
  MSG msg;

  if (!hPrevInstance)
     if (!InitApplication(hInstance))  return(FALSE);
  if (!InitInstance(hInstance, nCmdShow)) return(FALSE);
  while (GetMessage(&msg, NULL, 0, 0)) {
     TranslateMessage(&msg);
     DispatchMessage(&msg);
  }
  return(msg.wParam);
}

BOOL InitApplication(hInstance)
HANDLE hInstance;
{
  WNDCLASS wc;

  /* Main Window Class */
  wc.style = 0;
  wc.lpfnWndProc = (WNDPROC)MainWndProc;
  wc.cbClsExtra = 0;
  wc.cbWndExtra = 0;
  wc.hInstance = hInstance;
  wc.hIcon = LoadIcon(hInstance, "MyIcon");
  wc.hCursor = LoadCursor(NULL, IDC_ARROW);
  wc.hbrBackground = GetStockObject(LTGRAY_BRUSH);
  wc.lpszMenuName = NULL;
  wc.lpszClassName = "GenericWClass";
  if (!RegisterClass(&wc)) return(FALSE);
}

BOOL InitInstance(hInstance, nCmdShow)
HANDLE hInstance;
int nCmdShow;
{
  HWND hWnd;
  HMENU hSampleMenu;  

  hInst = hInstance;
  hSampleMenu = LoadMenu(hInstance, "U7120Menu");
  hWnd = CreateWindow("GenericWClass",
                      (LPCSTR)"PCI-7248",
                      WS_OVERLAPPEDWINDOW,
                      CW_USEDEFAULT,
                      CW_USEDEFAULT,
                      640,
                      230,
                      NULL,
                      hSampleMenu,
                      hInstance,
                      NULL);
  if (!hWnd) return(FALSE);
  ShowWindow(hWnd, nCmdShow);
  UpdateWindow(hWnd);
  return(TRUE);
}

BOOL PASCAL setup(HWND hWnd, unsigned message, WPARAM wParam, LPARAM lParam)
{
  int i;
  char n[16];
  char s[50];
      switch (message) {
         case WM_INITDIALOG:
              for (i=0;i<16;i++) {
                wsprintf(n, "%d", i);
                _strupr(n);
                SendMessage(GetDlgItem(hWnd,IDC_COMBO1), CB_ADDSTRING, NULL, (LONG)(LPSTR) n);
              }
              SendMessage(GetDlgItem(hWnd,IDC_COMBO1) , CB_SETCURSEL, 0, 0L);

              break;
         case WM_COMMAND:
              switch(LOWORD(wParam)) {

                case IDC_COMBO1:
                     if (HIWORD(wParam) == CBN_CLOSEUP) {
                        i = (int)SendMessage(GetDlgItem(hWnd,IDC_COMBO1), CB_GETCURSEL, 0, 0L);
                        SendMessage(GetDlgItem(hWnd,IDC_COMBO1), CB_GETLBTEXT, i, (LPARAM)((LPCSTR)n));
                        card_number = i;
                     }
                     return(TRUE);
                case IDOK:
                     if ((card=Register_Card(PCI_7248, card_number)) < 0) {
                        wsprintf(s, "Register_Card Error = %d\n", card);
                        MessageBox(hWnd, s, "Error", MB_OK);
                     }
                     EndDialog(hWnd, TRUE);
                     InvalidateRect(hWnd, NULL, FALSE);
                     return (TRUE);
                case IDCANCEL:
                     EndDialog(hWnd, TRUE);
                     return (TRUE);
              }
              break;
      }
      return (FALSE);
}

long  PASCAL MainWndProc(hWnd, message, wParam, lParam)
HWND hWnd;
UINT message;
WPARAM wParam;
LPARAM lParam;
{  
  HDC hDC;
  PAINTSTRUCT ps;
  int i, k, px, py;

  switch(message) {
    case WM_CREATE:
        DialogBox(hInst,IDD_DIALOG1, hWnd, setup);	
		if(card<0) {
		  SendMessage(hWnd, WM_CLOSE, 0, 0L);
		  break;
		}
		hLTGreenBrush = CreateSolidBrush(RGB(0, 255, 0));
        hGreenBrush = CreateSolidBrush(RGB(0, 128, 0));        
        hBlueBrush = CreateSolidBrush(RGB(0, 0, 255));               
        hRedBrush = CreateSolidBrush(RGB(255, 0, 0)); 
        
        input_pos[0][0].x=180;
        input_pos[0][0].y=40;
        input_pos[0][1].x=160; 
        input_pos[0][1].y=40; 
        input_pos[0][2].x=140;  
        input_pos[0][2].y=40;  
        input_pos[0][3].x=120;
        input_pos[0][3].y=40;
        input_pos[0][4].x=100;
        input_pos[0][4].y=40;
        input_pos[0][5].x=80;
        input_pos[0][5].y=40;
        input_pos[0][6].x=60; 
        input_pos[0][6].y=40; 
        input_pos[0][7].x=40;
        input_pos[0][7].y=40;
        
        output_pos[0][0].x=480;
        output_pos[0][0].y=40;
        output_pos[0][1].x=460; 
        output_pos[0][1].y=40; 
        output_pos[0][2].x=440;  
        output_pos[0][2].y=40;  
        output_pos[0][3].x=420;
        output_pos[0][3].y=40;
        output_pos[0][4].x=400;
        output_pos[0][4].y=40;
        output_pos[0][5].x=380;
        output_pos[0][5].y=40;
        output_pos[0][6].x=360; 
        output_pos[0][6].y=40; 
        output_pos[0][7].x=340;
        output_pos[0][7].y=40;
        
        io_pos[0][0].x=590;
        io_pos[0][0].y=40;
        io_pos[0][1].x=570; 
        io_pos[0][1].y=40; 
        io_pos[0][2].x=550;  
        io_pos[0][2].y=40;  
        io_pos[0][3].x=530;
        io_pos[0][3].y=40;
        io_pos[0][4].x=290;
        io_pos[0][4].y=40;
        io_pos[0][5].x=270;
        io_pos[0][5].y=40;
        io_pos[0][6].x=250; 
        io_pos[0][6].y=40; 
        io_pos[0][7].x=230;
        io_pos[0][7].y=40;        
        
        for (k=0;k<8;k++)
        { 
          input_pos[1][k].x  =input_pos[0][k].x;  
          input_pos[1][k].y  =input_pos[0][k].y+50;         
          output_pos[1][k].x =output_pos[0][k].x;        
          output_pos[1][k].y =output_pos[0][k].y+50;     
          io_pos[1][k].x     =io_pos[0][k].x;   
          io_pos[1][k].y     =io_pos[0][k].y+50;                   
        }
        for (i=0;i<2;i++)
        { 
         inputA[i]=0;
         outputA[i]=0;
         oldinputA[i]=0;
         
         inputB[i]=0;
         outputB[i]=0; 
         oldinputB[i]=0;
         
         inputC[i]=0;
         outputC[i]=0;
         oldinputC[i]=0;
         
         inputD[i]=0;
         outputD[i]=0;
         oldinputD[i]=0;
         
         port_a[i]=0;
		 //DIO_PortConfig(card,5*i+Channel_P1A, INPUT_PORT);
         port_b[i]=0;
         //DIO_PortConfig(card,5*i+Channel_P1B, INPUT_PORT);
         port_c_upper[i]=0;
         //DIO_PortConfig(card,5*i+Channel_P1CL, INPUT_PORT);
         port_c_lower[i]=0;      
		 //DIO_PortConfig(card,5*i+Channel_P1CH, INPUT_PORT);
         }                                
                                        
        SetTimer(hWnd, TIMER, 50, NULL);
        srand((unsigned)time(NULL));
        break;
    case WM_PAINT:
        hDC = BeginPaint(hWnd, &ps);     
                     
        //  Label                          
        SetTextColor(hDC,RGB(255,255,255));  
        SetBkColor(hDC, RGB(0, 0, 255)); 
        TextOut(hDC, 5, 40, "CN1", 3);      
        SetTextColor(hDC,RGB(255,255,255));  
        SetBkColor(hDC, RGB(0, 0, 255)); 
        TextOut(hDC, 5, 80, "CN2", 3);  
        
        // Digital Input  Box
        for (i=0;i<2;i++ )
        {
          if ( port_a[i]==0 )
            SelectObject(hDC, hLTGreenBrush);       
          else
            SelectObject(hDC, hGreenBrush);     
          Rectangle(hDC, input_pos[i][7].x-5, input_pos[i][7].y-12, input_pos[i][0].x+26, input_pos[i][0].y+30);        
          SetTextColor(hDC,RGB(0,0,0));        
          SelectObject(hDC, hLTGreenBrush);    
          Rectangle(hDC, input_pos[i][0].x+25, input_pos[i][0].y-12, input_pos[i][0].x+41, input_pos[i][0].y+9);        
          SetBkColor(hDC, RGB(0, 255, 0));
          TextOut(hDC, input_pos[i][0].x+30, input_pos[i][7].y-11, "I", 1);                                
          SelectObject(hDC, hGreenBrush);  
          Rectangle(hDC, input_pos[i][0].x+25, input_pos[i][0].y+9, input_pos[i][0].x+41, input_pos[i][0].y+30);
          SetBkColor(hDC, RGB(0, 128, 0));
          TextOut(hDC, input_pos[i][0].x+27, input_pos[i][7].y+7, "O", 1); 
         }
         
        for (i=0;i<2;i++ )
        { 
         if ( port_b[i]==0 )
           SelectObject(hDC, hLTGreenBrush);       
         else
           SelectObject(hDC, hGreenBrush);        
         Rectangle(hDC, output_pos[i][7].x-5, output_pos[i][7].y-12, output_pos[i][0].x+26, output_pos[i][0].y+30);        
         SelectObject(hDC, hGreenBrush);    
         SetTextColor(hDC,RGB(0,0,0));  
         Rectangle(hDC, output_pos[i][0].x+25, output_pos[i][0].y+9, output_pos[i][0].x+41, output_pos[i][0].y+30);      
         SetBkColor(hDC, RGB(0, 128, 0));
         TextOut(hDC, output_pos[i][0].x+27, output_pos[i][7].y+9, "O", 1);        
         SelectObject(hDC, hLTGreenBrush);       
         Rectangle(hDC, output_pos[i][0].x+25, output_pos[i][0].y-12, output_pos[i][0].x+41, output_pos[i][0].y+9);
         SetBkColor(hDC, RGB(0, 255, 0));
         TextOut(hDC, output_pos[i][0].x+30, output_pos[i][7].y-11, "I", 1); 
        }
        for (i=0;i<2;i++ )
        { 
         if ( port_c_upper[i]==0 )
          SelectObject(hDC, hLTGreenBrush);       
         else
           SelectObject(hDC, hGreenBrush);     
         Rectangle(hDC, io_pos[i][7].x-5, io_pos[i][7].y-12, io_pos[i][4].x+21, io_pos[i][4].y+30);     
         SelectObject(hDC, hLTGreenBrush);          
         Rectangle(hDC, io_pos[i][4].x+25, io_pos[i][4].y-12, io_pos[i][4].x+41, io_pos[i][4].y+9);
         SetBkColor(hDC, RGB(0, 255, 0));        
         SetTextColor(hDC,RGB(0,0,0));  
         TextOut(hDC, io_pos[i][4].x+30, io_pos[i][4].y-11, "I", 1); 
         SelectObject(hDC, hGreenBrush);  
         Rectangle(hDC, io_pos[i][4].x+25, io_pos[i][4].y+9, io_pos[i][4].x+41, io_pos[i][4].y+30);
         SetBkColor(hDC, RGB(0, 128, 0));
         TextOut(hDC, io_pos[i][4].x+28, io_pos[i][4].y+9, "O", 1); 
        }
        for (i=0;i<2;i++ )
        { 
         if ( port_c_lower[i]==0 )
            SelectObject(hDC, hLTGreenBrush);       
         else
            SelectObject(hDC, hGreenBrush);  
         Rectangle(hDC, io_pos[i][3].x-5, io_pos[i][3].y-12, io_pos[i][0].x+21, io_pos[i][0].y+30);        
         SelectObject(hDC, hLTGreenBrush);     
         Rectangle(hDC, io_pos[i][0].x+25, io_pos[i][0].y-12, io_pos[i][0].x+41, io_pos[i][0].y+9);
         SetBkColor(hDC, RGB(0, 255, 0));    
         SetTextColor(hDC,RGB(0,0,0));  
         TextOut(hDC, io_pos[i][0].x+30, io_pos[i][7].y-11, "I", 1);  
         SelectObject(hDC, hGreenBrush);  
         Rectangle(hDC, io_pos[i][0].x+25, io_pos[i][0].y+9, io_pos[i][0].x+41, io_pos[i][0].y+30);
         SetBkColor(hDC, RGB(0, 128, 0));
         TextOut(hDC, io_pos[i][0].x+28, io_pos[i][7].y+9, "O", 1); 
        }
         
        SetTextColor(hDC,RGB(255,255,255));  
        SetBkColor(hDC, RGB(0, 0, 255));
        TextOut(hDC, input_pos[0][7].x, input_pos[0][7].y-20,   "Port A", 6);      
        TextOut(hDC, output_pos[0][7].x, output_pos[0][7].y-20, "Port B", 6);   
        TextOut(hDC, io_pos[0][7].x, io_pos[0][7].y-20, "Port C(Upper)", 13);   
        TextOut(hDC, io_pos[0][3].x, io_pos[0][3].y-20, "Port C(Lower)", 13);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -