亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? twain.c

?? USB接口芯片D12在STC單片機上的驅動開發
?? C
字號:
/*
   //*************************************************************************
   //
   //                  P H I L I P S   P R O P R I E T A R Y
   //
   //           COPYRIGHT (c)   1997 BY PHILIPS SINGAPORE.
   //                     --  ALL RIGHTS RESERVED  --
   //
   // File Name:	TWAIN.C
   // Author:		Wenkai Du
   // Created:		18 Aug 98
   // Modified:
   // Revision:		1.0
   //
   //*************************************************************************
*/

#include <stdio.h>
#include <string.h>

#ifdef __C51__
	#include <reg51.h>                /* special function register declarations   */
#else
	#include <dos.h>
#endif

#include "epphal.h"
#include "d12ci.h"
#include "mainloop.h"
#include "usb100.h"
#include "chap_9.h"

extern CONTROL_XFER ControlData;
extern IO_REQUEST idata ioRequest;
extern EPPFLAGS bEPPflags;

unsigned char idata TwainFileNumber = 0, idata TwainCurrentFile = 0;
unsigned long idata TwainFileSize;

void get_firmware_version()
{
	unsigned char i;

#ifndef __C51__
	i = 0x01; // firmware version number, return 0x01 for PC kit version 1
#else
	i = 0x21; // firmware version number, return 0x11 for PC kit using 8052, 0x21 for USB-EPP
#endif
	single_transmit((unsigned char *)&i, 1);
}

void get_twain_request()
{
	if(ControlData.DeviceRequest.wValue == 0 &&
		ControlData.DeviceRequest.wLength == 1) // get file number
		single_transmit((unsigned char *)&TwainFileNumber, 1);
	if(ControlData.DeviceRequest.wValue == 1 &&
		ControlData.DeviceRequest.wLength == 1) // get current file
		single_transmit((unsigned char *)&TwainCurrentFile, 1);
	else if(ControlData.DeviceRequest.wValue == 2 &&
		ControlData.DeviceRequest.wLength == 4) // get file size
		single_transmit((unsigned char *)&TwainFileSize, 4);
	else
		stall_ep0();
}

void set_twain_request()
{
	if(ControlData.DeviceRequest.wValue == 1 &&
		ControlData.DeviceRequest.wLength == 1) {// set current file
		TwainCurrentFile = ControlData.dataBuffer[0];
		single_transmit(0, 0);
	}
	else if(ControlData.DeviceRequest.wValue == 2 &&
		ControlData.DeviceRequest.wLength == 4) { // set file size
		memcpy((unsigned char *)&TwainFileSize,
			ControlData.dataBuffer,
			ControlData.DeviceRequest.wLength);
		TwainFileNumber = 1;
		single_transmit(0, 0);
	}
	else if(ControlData.DeviceRequest.wValue == 6 &&
		ControlData.DeviceRequest.wLength == 1) { // clear all
		TwainFileNumber = 0;
		single_transmit(0, 0);
	}
	else
		stall_ep0();
}

void setup_dma_request()
{
#ifndef __C51__
	unsigned long offset;
#else
	unsigned char offset;
#endif

	memcpy((unsigned char *)&ioRequest + ControlData.DeviceRequest.wValue,
		ControlData.dataBuffer,
		ControlData.DeviceRequest.wLength);

	ioRequest.uSize = SWAP(ioRequest.uSize);
	ioRequest.uAddressL = SWAP(ioRequest.uAddressL);

	if(ioRequest.uSize > DMA_BUFFER_SIZE) { // Unaccepted request
		stall_ep0();
	}
	else {

		if(bEPPflags.bits.dma_state == DMA_IDLE) {
			DISABLE;
			bEPPflags.bits.setup_dma = 1;
			ENABLE;
		}
		else {
			DISABLE;
			bEPPflags.bits.dma_state = DMA_PENDING;
			ENABLE;
		}

	} // else if accepted request
}

void read_write_register(void)
{
	unsigned char i;

	if(ControlData.DeviceRequest.bmRequestType & (unsigned char)USB_ENDPOINT_DIRECTION_MASK) {

		if(bEPPflags.bits.verbose)
			printf("Read Registers: Offset = 0x%x, Length = 0x%x, Index = 0x%x.\n",
				ControlData.DeviceRequest.wValue,
				ControlData.DeviceRequest.wLength,
				ControlData.DeviceRequest.wIndex);

		if(ControlData.DeviceRequest.wIndex == GET_FIRMWARE_VERSION &&
			ControlData.DeviceRequest.wValue == 0 &&
			ControlData.DeviceRequest.wLength == 1)
			get_firmware_version();
		else if(ControlData.DeviceRequest.wIndex == GET_SET_TWAIN_REQUEST)
			get_twain_request();
		else
			stall_ep0();

	}	// if read register
	else{
		if(bEPPflags.bits.verbose) {

			printf("Write Registers: Offset = 0x%x, Length = 0x%x, Index = 0x%x.\n",
				ControlData.DeviceRequest.wValue,
				ControlData.DeviceRequest.wLength,
				ControlData.DeviceRequest.wIndex);

			printf("Data: ");
			for(i = 0; i < ControlData.DeviceRequest.wLength; i ++)
#ifndef __C51__
				printf("0x%x, ", *((ControlData.dataBuffer)+i));
#else
				printf("0x%bx, ", *((ControlData.dataBuffer)+i));
#endif
			printf("\n");
		}

		if(ControlData.DeviceRequest.wIndex == SETUP_DMA_REQUEST &&
			ControlData.DeviceRequest.wValue == 0 &&
			ControlData.DeviceRequest.wLength == 6)
			setup_dma_request();
		else if(ControlData.DeviceRequest.wIndex == GET_SET_TWAIN_REQUEST)
			set_twain_request();
		else
			stall_ep0();
	}	// if write register
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩激情av在线| 亚洲小说欧美激情另类| 美腿丝袜一区二区三区| 4438x成人网最大色成网站| 日韩高清不卡一区| 26uuu另类欧美亚洲曰本| 国产高清成人在线| 亚洲激情自拍偷拍| 欧美精品一区二区精品网| 成人小视频在线| 亚洲最快最全在线视频| 在线播放中文一区| 精品一区二区三区的国产在线播放| 911精品国产一区二区在线| 亚洲欧美综合在线精品| 欧美日韩不卡视频| 94-欧美-setu| 蜜桃av噜噜一区| 国产精品久久久久久久岛一牛影视| av资源网一区| 国产成人免费网站| 激情综合网激情| 日韩国产成人精品| 国产精品久久久久久久岛一牛影视| 91久久线看在观草草青青| 国产福利视频一区二区三区| 亚洲国产精品一区二区尤物区| 欧美高清在线一区| 国产欧美精品区一区二区三区| 欧美一区二区三区四区在线观看| 99久久伊人精品| 久久精品亚洲乱码伦伦中文| 久久综合九色综合97婷婷| 成人va在线观看| 国产精品国产成人国产三级| 欧美亚一区二区| 美国毛片一区二区三区| 高清成人免费视频| 国产亚洲午夜高清国产拍精品 | 国产一区二区在线免费观看| 日韩精品亚洲一区二区三区免费| 一区二区三区四区av| 亚洲色图清纯唯美| 调教+趴+乳夹+国产+精品| 亚洲一区国产视频| 五月天久久比比资源色| 中文字幕一区二区三区在线观看| 99久久精品费精品国产一区二区| 久久夜色精品国产噜噜av| 久久天堂av综合合色蜜桃网| 国产日产欧美精品一区二区三区| 国产精品初高中害羞小美女文| 中文字幕中文乱码欧美一区二区| 亚洲综合在线第一页| 精品一区二区三区免费视频| 不卡一区在线观看| 欧美欧美欧美欧美| 中文字幕在线免费不卡| 麻豆专区一区二区三区四区五区| 成人爽a毛片一区二区免费| 另类调教123区 | 一色屋精品亚洲香蕉网站| 亚洲精品中文在线观看| 国内精品嫩模私拍在线| 欧美一级夜夜爽| 亚洲图片自拍偷拍| 91美女片黄在线| 国产精品久久久久久久久图文区| 一区二区三区中文字幕精品精品| 国产一区二区91| 欧美大白屁股肥臀xxxxxx| 亚洲国产va精品久久久不卡综合 | 国产.精品.日韩.另类.中文.在线.播放| 日韩欧美国产不卡| 国产欧美一区二区三区沐欲| 亚洲成人黄色影院| 欧美日韩国产美| 一区二区三区日韩欧美| 91官网在线免费观看| 亚洲乱码国产乱码精品精可以看| 99精品桃花视频在线观看| 中文字幕免费不卡| 91网站黄www| 亚洲电影第三页| 久久久三级国产网站| 成人黄色一级视频| 亚洲免费观看视频| 69堂亚洲精品首页| 国产精选一区二区三区| 国产精品久久久99| 91精品国产欧美一区二区18| 精品夜夜嗨av一区二区三区| 欧美国产丝袜视频| 欧美卡1卡2卡| 国产成人自拍网| 午夜精品成人在线| 亚洲欧洲精品成人久久奇米网| 欧美午夜不卡视频| 激情五月婷婷综合| 一区二区三区欧美日| 日韩免费看的电影| 欧美日韩免费一区二区三区视频 | 久久精品一区二区三区不卡牛牛 | 成人黄色电影在线 | 国产精品素人一区二区| 欧美一区二区三区四区在线观看| 91啦中文在线观看| 丰满少妇久久久久久久| 男女男精品网站| 亚洲第一福利一区| 亚洲一区二区五区| 亚洲欧美日韩综合aⅴ视频| www久久久久| 亚洲国产精品高清| 久久影院视频免费| 亚洲小说春色综合另类电影| 国产成人亚洲精品狼色在线| 日韩二区三区四区| 亚洲精品国产视频| 亚洲高清不卡在线观看| 亚洲午夜久久久久久久久电影院| 亚洲精品国产精华液| 亚洲女子a中天字幕| 亚洲女性喷水在线观看一区| 中文字幕一区二区不卡| 亚洲视频1区2区| 日韩专区欧美专区| 国产美女精品一区二区三区| 不卡一区二区在线| 欧美日韩的一区二区| 日韩欧美一区中文| 亚洲手机成人高清视频| 婷婷久久综合九色综合伊人色| 蜜臀va亚洲va欧美va天堂| 国产综合成人久久大片91| 91麻豆国产自产在线观看| 91精品国产91久久久久久一区二区 | 国产亚洲欧美日韩日本| 一区二区三区四区av| 国产一区激情在线| 欧美老年两性高潮| 亚洲同性gay激情无套| 久久av中文字幕片| 欧美网站大全在线观看| 久久久电影一区二区三区| 亚洲一区二区三区四区五区中文 | 久久久久久久久久久久久久久99 | 亚洲伦在线观看| 国内精品第一页| 日韩一区二区三区在线观看| 综合电影一区二区三区| 国产精品18久久久久久久久久久久| 欧美私模裸体表演在线观看| 成人免费一区二区三区在线观看 | 日本va欧美va精品发布| 欧美曰成人黄网| 亚洲福利电影网| 欧美日韩精品免费观看视频| 一区二区三区在线免费| 91精品福利在线| 亚洲国产精品一区二区尤物区| 91视频.com| 日本特黄久久久高潮| 日韩亚洲欧美在线观看| 中文成人综合网| 在线观看亚洲精品视频| 亚洲午夜日本在线观看| 成人a区在线观看| 欧美一级淫片007| 免费观看一级特黄欧美大片| 国产精品一区二区三区乱码| kk眼镜猥琐国模调教系列一区二区| 91精品国产一区二区| 一区二区三区在线看| 91蝌蚪porny| 亚洲成人综合在线| 精品美女一区二区| 成人免费毛片片v| 日日摸夜夜添夜夜添国产精品| 欧美一级午夜免费电影| 欧美顶级少妇做爰| 亚洲大型综合色站| 欧美卡1卡2卡| 97成人超碰视| 美女mm1313爽爽久久久蜜臀| 国产喷白浆一区二区三区| 日本精品视频一区二区| 久久精品国产免费| 亚洲午夜av在线| 亚洲色图欧美激情| 欧美videossexotv100| 欧美日韩情趣电影| 91麻豆国产香蕉久久精品| 日韩国产高清在线| 国产精品卡一卡二卡三| 精品久久五月天| 欧美一区二区视频在线观看| 欧美午夜精品一区| 在线精品视频小说1| 豆国产96在线|亚洲|