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

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

?? dnw.cpp

?? 三星2440-2410 ARM 的Uboot下載上位機源代碼
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
#define STRICT
#define WIN32_LEAN_AND_MEAN

#include <windows.h>
#include <windowsx.h>
#include <commctrl.h>
#include <tchar.h>
#include <string.h>
#include <process.h>
#include <stdlib.h>

#include "resource.h"

#include "def.h"
#include "dnw.h"
#include "engine.h"
#include "fileopen.h"
#include "d_box.h"
#include "usbtxrx.h"

//NOTE: _beginthread() 
// To use _beginenthread(),Activate "Project/Settings/C/C++/Categry/Code generation/
// Use Run-Time library/Multithreaded or Debug Multithreaded"

// If DDK2000 is used,
// 1. Project_Settings/CC++/Preprocessor/Additional_include_directories = C:\NTDDK\inc
// 2. Project_Settings/Link/Input/Additional_library_path=c:\NTDDK\libfre\i386

// If DDKXP is used,
// 1. Project_Settings/CC++/Preprocessor/Additional include directories = C:\WINDDK\2600\inc\w2k
// 2-1. Project_Settings/Link/Input/Additional_library_path=C:\WINDDK\2600\lib\w2k\i386
//      This causes some warning about '.rdata' section attribute.
// 2-2. Project_Settings/Link/Input/Additional_library_path==C:\WINDDK\2600\lib\i386\free
//      There's no warning.

/*
===================== REVISON HISTORY =====================
1. 2000. 3.30: V0.01 
  First release of DNW
2. 2000.10.11: V0.2
  The edit control is used for scroll, copy&paste, smooth screen update
3. 2001.1.26: V0.3
  a) The CPU usage will be less. Sleep() is inserted during TX.
  b) The filesize and checksum are transmitted together with bin file.
  c) WriteCommBlock() bug is fixed. The txEmpty flag should be changed in only DoRxTx().
4. 2001.2.24: V0.31
  a) The size of edit buffer is changed by EM_LIMITTEXT message.
     EDIT_BUF_SIZE(30000) -> MAX_EDIT_BUF_SIZE(65000)
  b) If the edit box is greater than 50000,
     the size of edit box is reduced by 10000.
  c) The horizontal scroll bar is removed for better look. 
  d) In WaitCommEvent() loop, 
     the following condition is inserted to clear the overrun condition.
    	if((dwEvtMask & EV_ERR){...}
  e) EB_Printf() have some error to process large string data.
5. 2001.3.8: V0.32
  a) EDIT_BUF_SIZE is reduced 25000 because the EM_REPLACESEL message is done very slowly
     if the size is over about 30000.
6. 2001.4.11: V0.32A
  a) Experimentally, MAX_EDIT_BUF_SIZE is set to the default value(32767). 
     //SendMessage(_hwndEdit, EM_SETLIMITTEXT, MAX_EDIT_BUF_SIZE, 0L);
     RESULT: MAX_EDIT_BUF_SIZE doesn't affect the display delay problem.
             I think that the new method for deleting the contents should be applied
	     Let's do tonight
7. 2001.5.14: V0.34
   a) I have known that the edit control isn't adequate for console program.
      So, I would give up the development of DNW using the edit control
      The last decision is as follows;
      MAX_EDIT_BUF_SIZE (65000) //up to 65535
      EDIT_BUF_SIZE (30000)   
      EDIT_BUF_DEC_SIZE (10000)
   b) If the selected text is deleted, the edit control displays the first of the text.
      In this case, to show the end of the text, dummy REPLACE_SEL is added.

8. 2001.11.23: V0.4
   a) USB download function is added.
   b) GetOverlappedResult() is used in TxFile() in order to save the cpu time more efficiently 
   c) Serial Configuration dialog box
   d) In secbulk.sys is changed to support IRP_MN_QUERY_CAPABILITIES.
      So, the surpriseRemoval is allowed. When the USB is yanked impolitely, 
      the warning dialog box won't appear in WIN2000.

9. 2001.11.24: v0.41alpha
   a) WriteFile() supports overlapped I/O to check broken pipe.
   b) progress bar is added for transmit operation.
   c) USB,serial status is printed on the window title bar
   
10. 2001.12.5: v0.42a
   a) In secbulk.sys, the maximum number of bulk packit in 1ms frame duration is changed to 16 from 4.
      So, transfer rate is increased from 220KB/S to 405KB/S 
   b) Although the fileopen was failed(or canceled), the transmit wasn't canceled. This is fixed.      
   c) When the options menu is selected, a serial port will be reconnected.
   d) The receive test menu is added. 

11. 2001.12.6: v0.43
   a) Fou USB tx operation, TX_SIZE is increased from 2KB to 16KB.
      So, transfer rate is increased from 405KB/S to 490KB/S.
      (2KB:405KB/S 4KB:450KB/S  8KB:470KB/S 16KB:490KB/S)

12. 2001.12.7: v0.44b
   a) Although a serial port is not connected, the serial port is connected 
      after Configuration/Options menu -> fixed.
   b) The name dnw.cfg for v 0.4x is changed to dnw.ini 
      in order not to confuse old dnw.cfg for ver 0.3x
      
12. 2002.01.2: v0.44c
   a) The edit box size is changed to display 80x25 characters 
      
13. 2002.02.22: v0.45
   a) In windows95, DNW doesn't search USB stack.
   b) When download, there should be a cancel button
   c) Sometimes, the progress bar is not filled although download is doing.
      I think it's because InitDownloadProgress() is executed 
      before than DownloadProgressProc().
      So, I inserted the code to wait until DownloadProgressProc() is executed as follows;
	  while(_hDlgDownloadProgress==0); //wait until the progress dialog box is ready.
   d) secbulk is optimized 
14. 2002.04.01: v0.46
   a) If DNW is start to transmit although the b/d is not ready, DNW will be hung.
      It's only solution to turn off and on the b/d.
      To solve this problem smoothly, the overlapped I/O will be used for USB transfer. 
      But, secbulk.sys may not support overlapped I/O. 
      Although I implemented the overlapped I/O, WriteFile() function didn't return before its completion.
   b) Because the overlapped I/O doens't work as my wish,
      and in order to quit the dnw.exe hung, modaless dialogue box is used for the progress bar.
   c) *.nb0

  15. 2002.04.10: v0.47
   a) I reduce the edit box size as follows;  
	#define MAX_EDIT_BUF_SIZE (0x7FFE) 
	#define EDIT_BUF_SIZE (0x6000)   
	#define EDIT_BUF_DEC_SIZE (0x1000)
      There is no good cause about why I change. I want to just reduce the edit box size.
   b) Sometimes, when transmit, there is no transmit although the transmit progrss dialog box is shown.
      I think that it's because the _enthread() fails.
      To debug this problem, the _enthread result is checked.

  16. 2002.04.19: v0.48
   a) The bug of WIN2K WINAPI is found. ->It's not fixed perfectly.
      Please let me know of the solution to avoid the memory problem of SetWindowText() API.

      The SetWindowText()(also,WM_SETTEXT message) consumes 4KB system memory every times.
      I think there is some bug in SetWindowText API.
      In my case, because SetWindowText() is called every 1 seconds, 
      the system memory used by DNW.exe is increased by 4KB every 1 seconds.
      For emergency fix, SetWindowText() will be called only when its content is changed.
      
      NOTE. This memory problem is not memory leakage problem 
            because the memory is flushed when the window is shrinked.

  17. 2002.05.03:v0.49
   a) Sometimes, when transmit, there is no transmit although the transmit progrss dialog box is shown.
      I have found the cause.
      It's because _hDlgDownloadProgress.
      If the TxFile thread is executed first than WM_INITDIALOG message,
      while(_hDlgDownloadProgress==NULL); will not exited because _hDlgDownloadProgress 
      in CPU register will be checked. So, the volatile should have been used 
      because _hDlgDownloadProgress value is changed in another thread.
      The solution is as follows;
      volatile HWND _hDlgDownloadProgress=NULL;
   b) Sometimes, the CPU usage will be always 100% if dnw.exe is being executed.
      This is because of the just above problem.
      If the problem 17-a) is occurred, the TxFile will be an obsolete thread.
      while(_hDlgDownloadProgress==NULL); will use the CPU at 100%.
      I think that this problem may be cleared because the problem 17-a) is cleared.
   c) The small icon,DNW is displayed in the window shell task bar and the window title.

  18. 2003.04.25:v0.50
   a) In case that a USB2Serial cable is used when COMPAQ Presario 1700, 
      a few last character display is postponed until the next group is received.
      -> MSDN recommends the while() for read operation, which has solved the problem.
   b) In DoRxTx(), the EV_ERR is added to SetCommMask(); -> which is more correct, I think.
   c) For overlapped WaitCommEvent,ReadFile,WriteFile, the return value should be checked.
      For ReadFile,WriteFile cases, the operation has no change.
      In previous version(V0.49), WaitCommEvent(,,NULL) should have not been used because OVERLAPPED I/O was being used.
      The combination of WaitCommEvent(,,&os) and GetOverlappedResult() will fix this problem.
   d) During developing the DNW v0.50, I had experienced some blue screen without any USB connection when I reset the SMDK2410.
      This problem was occurred when WaitCommEvent(,,&os) without GetOverlappedResult().
      This problem was not revived when is WaitCommEvent(,,NULL) although it's not correct. 
      
      From this phenomenon, I assume that the blue-screen, which is caused sometimes when resetting the SMDK2410, 
      may be caused by the mis-use of WaitCommEvent(,,NULL).

      But, it's still truth that the abnormal USBD response may cause the windows blue-screen
      ,which I experienced many times during my secbulk.sys development.
   
  19. 2003.04.29:v0.50A
   a) If the break condition is detected, "[DBG:EV_ERR]" message is displayed.
      So, the display of "[DBG:EV_ERR]" is removed.
*/

/*   
Items to be enhanced.
   - avoid SetWindowText() API problem.
   - remove debug stuff in following functions.
         void InitDownloadProgress(void);   
	 void DisplayDownloadProgress(int percent);
   - make status bar.
   - malloc() uses too much memory for large file transfer.
   - Enlarge the scroll buffer -> the edit box is not adequate.
   - file logging function
   - Ctrl+C should be work as copy function.
*/ 

/*
Edit Box Note:
- Check if the edit box is scrolled to show the text being deleted
  when the selected text is deleted in Win2000. In windows98, It's scrolled to show the deleted portion unfortunately.
*/

#define IS_OVERLAPPED_IO    (TRUE)

int userBaudRate,idBaudRate;
int userComPort;

#define MAX_BLOCK_SIZE (4096)

HANDLE idComDev;
OVERLAPPED osWrite,osRead;
volatile int isConnected=FALSE;
TCHAR rxBuf[MAX_BLOCK_SIZE+1];
volatile char *txBuf;
volatile DWORD iTxBuf;
DWORD txBufSize;

volatile int txEmpty=TRUE;



void MenuAbout(HWND hwnd)
{
    MessageBox(hwnd,TEXT("串口/USB下載器0.98\n\n")
		    TEXT("1. e-mail: smofx@163.com\n")
	  	    TEXT("2. USB Tx 格式: addr(4)+size(4)+data(n)+cs(2)   \n")
		    TEXT("3. 串口 Tx 格式: size(4)+data(n)+cs(2)\n"),
	   	    TEXT("關于")APPNAME,MB_OK | MB_ICONINFORMATION );
}





void Quit(HWND hwnd)
{
    CloseComPort();
}



void MenuConnect(HWND hwnd)
{
    if(isConnected==TRUE)
    {
	CloseComPort();
    }

    OpenComPort(userComPort);
}



void UpdateWindowTitle(void)
{
    TCHAR title[256];
    TCHAR tch[16];
    
    static int prevComPort=0xff;
    static int prevBaudRate=0xff;
    static int prevUsbAlive=0xff;
    static int prevIsConnected=0xff;
    int usbAlive;

    lstrcpy(title,APPNAME);
    lstrcat(title,TEXT("   [COM"));

    if(isConnected==TRUE) //serial O.K.
    {
	tch[0]='0'+userComPort;
	tch[1]='\0';
	lstrcat(title,tch);
	lstrcat(title,TEXT(","));
	lstrcat(title,_itot(userBaudRate,tch,10) );   //_itot :TCHAR version of itoa 
	lstrcat(title,TEXT("bps]"));
    }
    else
    {
	lstrcat(title,TEXT(":x]"));
    }

    
    if(IsUsbConnected())
    {
	lstrcat(title,TEXT("[USB:OK]"));
	usbAlive=1;
    }
    else
    {
	lstrcat(title,TEXT("[USB:x]"));
	usbAlive=0;
    }

    //The bug of WIN2K WINAPI is found.
    //The SetWindowText()(also,WM_SETTEXT message) consumes 4KB system memory every times.
    //I think there is some bug in SetWindowText API.
    //In my case, because SetWindowText() is called every 1 seconds, 
    //the system memory used by DNW.exe is increased by 4KB every 1 seconds.
    //For emergency fix, SetWindowText will called only when its content is changed.
    //NOTE. This memory leakage is flushed when window is shrinked.

    if(userComPort!=prevComPort || userBaudRate!=prevBaudRate || usbAlive!=prevUsbAlive ||
       isConnected!=prevIsConnected )
    {
	SetWindowText(_hwnd,title);
    }
    prevComPort=userComPort;
    prevBaudRate=userBaudRate;
    prevUsbAlive=usbAlive;
    prevIsConnected=isConnected;
}



void MenuTransmit(HWND hwnd)
{
    HANDLE hFile;
    DWORD fileSize;
    unsigned short cs=0;
    DWORD i;
    BOOL result;
    unsigned long threadResult;

    if(!isConnected)
    {
	EB_Printf(TEXT("[ERROR:Not Connected]\n"));
	return;
    }
    result=PopFileOpenDlg(hwnd,szFileName,szTitleName);
    
    if(result==0) //file open fail
    {
	return;
    }

    hFile=CreateFile(szFileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN_EXISTING,0,NULL);

    if(hFile==INVALID_HANDLE_VALUE)
    {
	EB_Printf(TEXT("[ERROR:File Open]\n") );
	return;
    }
    
    fileSize=GetFileSize(hFile,NULL);

    txBuf=(char *)malloc(fileSize+6);
    if(txBuf==0)
    {
	EB_Printf(TEXT("[ERROR:Memory Allocation Fail:(%d)]\n"),fileSize+6 );
	return;
    }

    ReadFile(hFile,(void *)(txBuf+4),fileSize,&txBufSize,NULL);
    if(txBufSize!=fileSize)    
    {
    	EB_Printf(TEXT("[ERROR:File Size Error]\n") );
	return;
    }

    *((DWORD *)txBuf)=fileSize+6;   //attach filesize(n+6) 

    for(i=4;i<(fileSize+4);i++)
	cs+=(BYTE)(txBuf[i]);
    *((WORD *)(txBuf+4+fileSize))=cs;   //attach checksum 
    
    txBufSize+=6;
    iTxBuf=0;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品自拍三区| 亚洲一区二区欧美激情| 色综合天天综合狠狠| 日韩精品1区2区3区| 一区二区三区四区不卡在线| 日韩欧美色综合| 欧美性大战久久久久久久蜜臀| 国产精品一区二区三区四区 | 韩国av一区二区三区四区| 亚洲视频在线一区观看| 久久天天做天天爱综合色| 日韩三级免费观看| 欧美老人xxxx18| 成人三级在线视频| 国产精品自拍av| 国产一区啦啦啦在线观看| 日韩高清不卡一区| 日韩黄色免费电影| 午夜视频在线观看一区二区三区 | 成人免费精品视频| 国产真实乱偷精品视频免| 亚洲成人av免费| 日韩免费一区二区| 在线观看国产日韩| 国产精品资源在线| 丝袜脚交一区二区| 天堂久久久久va久久久久| 亚洲mv在线观看| 亚洲成av人影院在线观看网| 一区二区三区免费在线观看| 亚洲国产sm捆绑调教视频| 亚洲午夜在线电影| 日韩不卡一区二区三区| 蜜臀av一级做a爰片久久| 理论电影国产精品| 国产夫妻精品视频| 99久久精品国产麻豆演员表| va亚洲va日韩不卡在线观看| 国产高清视频一区| 国产精品综合二区| 成人国产精品免费观看视频| 99精品欧美一区二区三区综合在线| 成人深夜在线观看| 欧美三级日本三级少妇99| 欧美日韩国产小视频| 精品免费日韩av| 国产精品女同互慰在线看| 国产精品国模大尺度视频| 中文字幕日韩一区二区| 亚洲国产成人va在线观看天堂| 五月婷婷欧美视频| 国产成人午夜视频| 色婷婷亚洲综合| 欧美一级欧美三级在线观看| 久久先锋影音av| 一区二区三区四区中文字幕| 青娱乐精品在线视频| 成人性生交大片免费看视频在线| 色婷婷精品久久二区二区蜜臂av | 亚洲乱码国产乱码精品精的特点 | 国产精品一区免费在线观看| 在线观看网站黄不卡| 7777精品久久久大香线蕉| 日韩精品中文字幕在线不卡尤物| 国产精品二区一区二区aⅴ污介绍| 一区二区三区四区五区视频在线观看| 日韩二区三区在线观看| 福利一区福利二区| 欧美日韩中字一区| 亚洲国产精品av| 亚洲午夜国产一区99re久久| 亚洲女与黑人做爰| 国产美女精品在线| 国产精品66部| 精品人在线二区三区| 一区二区国产视频| 99久久精品免费| 久久久欧美精品sm网站| 亚洲18女电影在线观看| 成人一区在线看| 91啪亚洲精品| 国产调教视频一区| 国内久久婷婷综合| 91精品国产乱码久久蜜臀| 亚洲精品成a人| 99国产欧美久久久精品| 久久久午夜精品| 裸体在线国模精品偷拍| 在线成人午夜影院| 一区二区三区中文在线观看| 成人激情校园春色| 久久精品网站免费观看| 国产精品99久久久久久似苏梦涵| 777亚洲妇女| 亚洲成人在线免费| 精品视频在线视频| 亚洲午夜久久久久久久久电影院| 91在线看国产| 亚洲精品videosex极品| 91亚洲精品一区二区乱码| 久久人人97超碰com| 国产精品资源在线观看| www国产精品av| 国产成人精品综合在线观看 | 天天av天天翘天天综合网 | 亚洲精品一区二区三区在线观看| 中文字幕亚洲综合久久菠萝蜜| 午夜精品久久一牛影视| 91精品国产入口| 精品一区二区三区免费观看 | 国产精品网站在线| 国产在线播放一区三区四| 91精品国产91热久久久做人人| 亚洲电影第三页| 日韩免费在线观看| 国产成人午夜99999| 国产精品系列在线| 在线亚洲精品福利网址导航| 一区二区成人在线观看| 国产超碰在线一区| 中文字幕免费在线观看视频一区| 99精品久久久久久| 日韩影视精彩在线| 久久精品在线观看| 色综合一个色综合亚洲| 日韩av一级电影| 国产精品国产三级国产专播品爱网| 99精品国产热久久91蜜凸| 亚洲午夜三级在线| 2023国产一二三区日本精品2022| 成人毛片视频在线观看| 18成人在线观看| 欧美日韩国产成人在线免费| 久久99国产精品成人| 亚洲蜜桃精久久久久久久| 欧美一区二区高清| 免费成人在线影院| 日韩欧美一区二区视频| 日本不卡高清视频| 久久久久国产成人精品亚洲午夜 | 性欧美疯狂xxxxbbbb| 欧美本精品男人aⅴ天堂| av资源站一区| 黄一区二区三区| 亚洲综合另类小说| 国产女主播视频一区二区| 欧美日韩综合一区| 丁香天五香天堂综合| 亚洲国产sm捆绑调教视频 | 欧美一区二区播放| 国产一区二区免费在线| 日韩激情中文字幕| 亚洲影院久久精品| 国产精品久久久久久一区二区三区| 欧美高清dvd| 日本韩国精品一区二区在线观看| 国产精品综合一区二区| 麻豆91免费看| 欧美aaaaa成人免费观看视频| 亚洲日本在线看| 日本一区二区视频在线| 欧美成人女星排名| 欧美一级理论性理论a| 3d成人h动漫网站入口| 欧洲精品视频在线观看| 99久久精品国产麻豆演员表| 国产露脸91国语对白| 青青草视频一区| 亚洲欧美欧美一区二区三区| 最新国产の精品合集bt伙计| 国产精品污污网站在线观看| 国产性做久久久久久| 久久久久久9999| 久久久久久夜精品精品免费| 久久久久久久久久久久久夜| 日韩欧美成人一区二区| 精品国产三级a在线观看| 欧美一级日韩一级| 日韩欧美一级二级| 久久亚洲一区二区三区明星换脸 | 99re8在线精品视频免费播放| 夜夜嗨av一区二区三区中文字幕| 国产精品毛片久久久久久久 | 婷婷中文字幕一区三区| 亚洲一区二区三区四区中文字幕| 亚洲激情六月丁香| 亚洲va欧美va国产va天堂影院| 亚洲色图欧洲色图婷婷| 亚洲欧美成aⅴ人在线观看| 久久在线免费观看| 久久欧美一区二区| 一区二区三区四区亚洲| 日韩成人免费电影| 国产一区二区三区四| 成人动漫一区二区三区| 色综合 综合色| 欧美三级午夜理伦三级中视频| 欧美精三区欧美精三区| 日韩欧美久久一区| 国产精品视频yy9299一区|