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

📄 并口操作读写外设.cpp

📁 此程序提供PC并行口的详细操作方法,方便PC通过并行口与外设进行沟通
💻 CPP
字号:
// Pal_rw.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "string.h"
#include "conio.h"
#include "windows.h"  
#include "winio.h"

int main(int argc, char* argv[])
{
  FILE *F_CMD,*F_DAT;
  int V_Data,I;
  int CMD[8];
  unsigned long int V_Length;
  char Name1[20],Name2[20];

  if(argc<2){
    printf("Please input file Name!\n");
    scanf("%s",Name1);
  }
  else strcpy(Name1,argv[1]);

  F_CMD = fopen(Name1,"rt");
  if(F_CMD == NULL){
    printf("%s not found!\n",Name1);
    return 0;
  }

  if (!InitializeWinIo())
  {
    printf("Can not initialize WinIO!");
    fclose(F_CMD);
    return 0;
  }
  
  _outp(0x37A,0x20);    /*Reset(D2) NDS Card*/
  _outp(0x37A,0x24);    /*And 378H = Input  */
  
  fscanf(F_CMD,"%s",Name1);
  while(!feof(F_CMD)){
    fscanf(F_CMD,"%X",&V_Length);
    fscanf(F_CMD,"%s",Name2);
    for(I=0;I<8;I++){
      V_Data = Name1[2*I] ;
      if(V_Data > '9'){
        V_Data = V_Data - 0x07 ;
      }
      V_Data = V_Data - 0x30 ;
      V_Data = V_Data << 4 ;
      CMD[I] = V_Data ;
      V_Data = Name1[2*I+1] ;
      if(V_Data > '9'){
        V_Data = V_Data - 0x07 ;
      }
      V_Data = V_Data - 0x30 ;
      CMD[I] = CMD[I] + V_Data ;
    }
    _outp(0x37A,0x06);            /* CSB1 = 0, 378H O */
    F_DAT = fopen(Name2,"wb");
    for(I=0;I<8;I++){               /* Send 8 Byte CMD  */
      V_Data = CMD[I];
      _outp(0x378,V_Data);  /* Set CMD Data     */
      _outp(0x37A,0x07);    /* Clock Low        */
      _outp(0x37A,0x06);    /* Clock Hig        */
    }
    _outp(0x37A,0x26);            /* Set 0x378 = Input*/
    
    while(V_Length != 0){
      _outp(0x37A,0x27);    /* Clock Low */
      V_Data = _inp(0x378);
      _outp(0x37A,0x26);    /* Clock Hig */
      fputc(V_Data,F_DAT);
      V_Length-- ;
    }
    _outp(0x37A,0x04);            /* CSB1 = 1, 378H O */
    fclose(F_DAT);
    Sleep(10);
    fscanf(F_CMD,"%s",Name1);
  }
  _outp(0x37A,0x24);    /*And 378H = Input  */

  ShutdownWinIo();

  fclose(F_CMD);
  
  return 0;
}

⌨️ 快捷键说明

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