📄 并口操作读写外设.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 + -