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

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

?? common.cpp

?? 配合KEIL C的AGSI調試I2C的工具
?? CPP
字號:

// This module contains functions that are needed for almost every AGSI DLL

#include "stdafx.h"
#include "Agsi.h"
#include "common.h"

AGSICONFIG  AgsiConfig;
struct AGSIFUNCS   Agsi;

DWORD GetFunctionPointers(void) {           // get all function pointers

  Agsi.DefineSFR            = (tAgsiDefineSFR)             GetProcAddress(AgsiConfig.m_hInstance, "AgsiDefineSFR");
  Agsi.DefineVTR            = (tAgsiDefineVTR)             GetProcAddress(AgsiConfig.m_hInstance, "AgsiDefineVTR");
  Agsi.DeclareInterrupt     = (tAgsiDeclareInterrupt)      GetProcAddress(AgsiConfig.m_hInstance, "AgsiDeclareInterrupt");
  Agsi.SetWatchOnSFR        = (tAgsiSetWatchOnSFR)         GetProcAddress(AgsiConfig.m_hInstance, "AgsiSetWatchOnSFR");
  Agsi.SetWatchOnVTR        = (tAgsiSetWatchOnVTR)         GetProcAddress(AgsiConfig.m_hInstance, "AgsiSetWatchOnVTR");
  Agsi.SetWatchOnMemory     = (tAgsiSetWatchOnMemory)      GetProcAddress(AgsiConfig.m_hInstance, "AgsiSetWatchOnMemory");
  Agsi.CreateTimer          = (tAgsiCreateTimer)           GetProcAddress(AgsiConfig.m_hInstance, "AgsiCreateTimer");
  Agsi.DefineMenuItem       = (tAgsiDefineMenuItem)        GetProcAddress(AgsiConfig.m_hInstance, "AgsiDefineMenuItem");

  Agsi.WriteSFR             = (tAgsiWriteSFR)              GetProcAddress(AgsiConfig.m_hInstance, "AgsiWriteSFR");
  Agsi.ReadSFR              = (tAgsiReadSFR)               GetProcAddress(AgsiConfig.m_hInstance, "AgsiReadSFR");
  Agsi.WriteVTR             = (tAgsiWriteVTR)              GetProcAddress(AgsiConfig.m_hInstance, "AgsiWriteVTR");
  Agsi.ReadVTR              = (tAgsiReadVTR)               GetProcAddress(AgsiConfig.m_hInstance, "AgsiReadVTR");
  Agsi.SetSFRReadValue      = (tAgsiSetSFRReadValue)       GetProcAddress(AgsiConfig.m_hInstance, "AgsiSetSFRReadValue");
  Agsi.ReadMemory           = (tAgsiReadMemory)            GetProcAddress(AgsiConfig.m_hInstance, "AgsiReadMemory");
  Agsi.WriteMemory          = (tAgsiWriteMemory)           GetProcAddress(AgsiConfig.m_hInstance, "AgsiWriteMemory");
  Agsi.GetLastMemoryAddress = (tAgsiGetLastMemoryAddress)  GetProcAddress(AgsiConfig.m_hInstance, "AgsiGetLastMemoryAddress");
  Agsi.IsSimulatorAccess    = (tAgsiIsSimulatorAccess)     GetProcAddress(AgsiConfig.m_hInstance, "AgsiIsSimulatorAccess");
  Agsi.SetTimer             = (tAgsiSetTimer)              GetProcAddress(AgsiConfig.m_hInstance, "AgsiSetTimer");
  Agsi.GetStates            = (tAgsiGetStates)             GetProcAddress(AgsiConfig.m_hInstance, "AgsiGetStates");
  Agsi.GetProgramCounter    = (tAgsiGetProgramCounter)     GetProcAddress(AgsiConfig.m_hInstance, "AgsiGetProgramCounter");
  Agsi.IsInInterrupt        = (tAgsiIsInInterrupt)         GetProcAddress(AgsiConfig.m_hInstance, "AgsiIsInInterrupt");
  Agsi.IsSleeping           = (tAgsiIsSleeping)            GetProcAddress(AgsiConfig.m_hInstance, "AgsiIsSleeping");
  Agsi.StopSimulator        = (tAgsiStopSimulator)         GetProcAddress(AgsiConfig.m_hInstance, "AgsiStopSimulator");
  Agsi.TriggerReset         = (tAgsiTriggerReset)          GetProcAddress(AgsiConfig.m_hInstance, "AgsiTriggerReset");
  Agsi.UpdateWindows        = (tAgsiUpdateWindows)         GetProcAddress(AgsiConfig.m_hInstance, "AgsiUpdateWindows");
  Agsi.HandleFocus          = (tAgsiHandleFocus)           GetProcAddress(AgsiConfig.m_hInstance, "AgsiHandleFocus");
  Agsi.GetExternalClockRate = (tAgsiGetExternalClockRate)  GetProcAddress(AgsiConfig.m_hInstance, "AgsiGetExternalClockRate");
  Agsi.GetInternalClockRate = (tAgsiGetInternalClockRate)  GetProcAddress(AgsiConfig.m_hInstance, "AgsiGetInternalClockRate");
  Agsi.GetClockFactor       = (tAgsiGetClockFactor)        GetProcAddress(AgsiConfig.m_hInstance, "AgsiGetClockFactor");
  Agsi.Message              = (tAgsiMessage)               GetProcAddress(AgsiConfig.m_hInstance, "AgsiMessage");
  Agsi.GetTargetKey         = (tAgsiGetTargetKey)          GetProcAddress(AgsiConfig.m_hInstance, "AgsiGetTargetKey");
  Agsi.SetTargetKey         = (tAgsiSetTargetKey)          GetProcAddress(AgsiConfig.m_hInstance, "AgsiSetTargetKey");
  Agsi.GetSymbolByName      = (tAgsiGetSymbolByName)       GetProcAddress(AgsiConfig.m_hInstance, "AgsiGetSymbolByName");
  Agsi.GetSymbolByValue     = (tAgsiGetSymbolByValue)      GetProcAddress(AgsiConfig.m_hInstance, "AgsiGetSymbolByValue");

  if ((Agsi.DefineSFR            == NULL) ||
      (Agsi.DefineVTR            == NULL) ||
      (Agsi.DeclareInterrupt     == NULL) ||
      (Agsi.SetWatchOnSFR        == NULL) ||
      (Agsi.SetWatchOnVTR        == NULL) ||
      (Agsi.SetWatchOnMemory     == NULL) ||
      (Agsi.CreateTimer          == NULL) ||
      (Agsi.DefineMenuItem       == NULL) ||

      (Agsi.WriteSFR             == NULL) ||
      (Agsi.ReadSFR              == NULL) ||
      (Agsi.WriteVTR             == NULL) ||
      (Agsi.ReadVTR              == NULL) ||
      (Agsi.SetSFRReadValue      == NULL) ||
      (Agsi.ReadMemory           == NULL) ||
      (Agsi.WriteMemory          == NULL) ||
      (Agsi.GetLastMemoryAddress == NULL) ||
      (Agsi.IsSimulatorAccess    == NULL) ||
      (Agsi.SetTimer             == NULL) ||
      (Agsi.GetStates            == NULL) ||
      (Agsi.GetProgramCounter    == NULL) ||
      (Agsi.IsInInterrupt        == NULL) ||
      (Agsi.IsSleeping           == NULL) ||
      (Agsi.StopSimulator        == NULL) ||
      (Agsi.TriggerReset         == NULL) ||
      (Agsi.UpdateWindows        == NULL) ||
      (Agsi.HandleFocus          == NULL) ||
      (Agsi.GetExternalClockRate == NULL) ||
      (Agsi.GetInternalClockRate == NULL) ||
      (Agsi.GetClockFactor       == NULL) ||
      (Agsi.Message              == NULL) ||
      (Agsi.GetTargetKey         == NULL) ||
      (Agsi.SetTargetKey         == NULL) ||
      (Agsi.GetSymbolByName      == NULL) ||
      (Agsi.GetSymbolByValue     == NULL)) {

    return(FALSE);
  }

  return(1);
}

//********************************************************************************************
// The following functions help you to input and output strings and (float) numbers in dialogs
// Please review them before you try to write your own function

// Output 2-digit Hexnumber to Text-Control of given Dialog
void StringHex2 (CWnd * pCWnd, DWORD val)  {
  char locbuffer[20];
  sprintf (locbuffer, "0x%02X", val);
  pCWnd->SetWindowText (locbuffer);
}

// Output 4-digit Hexnumber to Text-Control of given Dialog
void StringHex4 (CWnd * pCWnd, DWORD val)  {
  char locbuffer[20];
  sprintf (locbuffer, "0x%04X", val);
  pCWnd->SetWindowText (locbuffer);
}

// Output 6-digit Hexnumber to Text-Control of given Dialog
void StringHex6 (CWnd * pCWnd, DWORD val)  {
  char locbuffer[20];
  sprintf (locbuffer, "0x%06X", val);
  pCWnd->SetWindowText (locbuffer);
}

// Output Float number to Text-Control of given Dialog
void StringFloat (CWnd * pCWnd, float val)  {
  char locbuffer[20];
  sprintf (locbuffer, "%1.4f", val);
  pCWnd->SetWindowText (locbuffer);
}

static const char INPUT_ERR_TITLE [] = "Invalid number";
static const char INPUT_ERRMSG[]     = "You have entered an invalid number!\n"
                                       "The previous value will be restored.\n"
                                       "Examples: 0x12\n";

static const char INPUT_OVR_TITLE [] = "Out of range";
static const char INPUT_OVRMSG[]     = "You have entered a number that is out of range!\n";

long GetDlg8BNumber (CWnd * pCWnd, DWORD oldval) {
  DWORD temp;
  WORD n;
  char lbuf[100];
  
  n = pCWnd->GetWindowText (lbuf, 100);
  lbuf[n] = '\0';  /* terminate string */
  n = sscanf(lbuf, "%x", &temp);
  if (n != 1) {
    MessageBeep(MB_ICONEXCLAMATION);
    pCWnd->MessageBox(&INPUT_ERRMSG[0], &INPUT_ERR_TITLE[0], MB_OK|MB_ICONSTOP); 
    StringHex2 (pCWnd, oldval);
    return(-1);
  }
  if (temp > 0xFF) {
    MessageBeep(MB_ICONEXCLAMATION);
    pCWnd->MessageBox(INPUT_OVRMSG, INPUT_OVR_TITLE, MB_OK | MB_ICONSTOP); 
    StringHex2 (pCWnd, oldval);
    return(-1);
  }
  StringHex2 (pCWnd, temp);
  return(temp);
}

long GetDlg16BNumber (CWnd *pCWnd, DWORD oldval) {
  DWORD temp;
  WORD n;
  char lbuf[100];
  
  n = pCWnd->GetWindowText (lbuf, 100);
  lbuf[n] = '\0';  /* terminate string */
  n = sscanf(lbuf, "%x", &temp);
  if (n != 1) {
    MessageBeep(MB_ICONEXCLAMATION);
    pCWnd->MessageBox(&INPUT_ERRMSG[0],&INPUT_ERR_TITLE[0],MB_OK|MB_ICONSTOP); 
    StringHex4 (pCWnd, oldval);
    return(-1);
  }
  if (temp > 0xFFFF) {
    MessageBeep(MB_ICONEXCLAMATION);
    pCWnd->MessageBox(INPUT_OVRMSG, INPUT_OVR_TITLE, MB_OK | MB_ICONSTOP); 
    StringHex4 (pCWnd, oldval);
    return(-1);
  }
  StringHex4 (pCWnd, temp);
  return(temp);
}

long GetDlg24BNumber (CWnd *pCWnd, DWORD oldval) {
  DWORD temp;
  WORD n;
  char lbuf[100];
  
  n = pCWnd->GetWindowText (lbuf, 100);
  lbuf[n] = '\0';  /* terminate string */
  n = sscanf(lbuf, "%x", &temp);
  if (n != 1) {
    MessageBeep(MB_ICONEXCLAMATION);
    pCWnd->MessageBox(INPUT_ERRMSG, INPUT_ERR_TITLE, MB_OK | MB_ICONSTOP); 
    StringHex6 (pCWnd, oldval);
    return(-1);
  }
  if (temp > 0xFFFFFF) {
    MessageBeep(MB_ICONEXCLAMATION);
    pCWnd->MessageBox(INPUT_OVRMSG, INPUT_OVR_TITLE, MB_OK | MB_ICONSTOP); 
    StringHex6 (pCWnd, oldval);
    return(-1);
  }
  StringHex6 (pCWnd, temp);
  return(temp);
}


static const char INPUT_F_ERR_TITLE [] = "Invalid float number";
static const char INPUT_F_ERRMSG[]     = "You have entered an invalid float number!\n"
                                         "The previous value will be restored.\n"
                                         "Example: 1.234\n";

float GetDlgFloat (CWnd * pCWnd, float oldval) {
  WORD n;
  float f;
  char lbuf[100];
  
  n = pCWnd->GetWindowText (lbuf, 100);
  lbuf[n] = '\0';  /* terminate string */
  n = sscanf(lbuf, "%f", &f);
  if (n != 1) {
    MessageBeep(MB_ICONEXCLAMATION);
    pCWnd->MessageBox(INPUT_F_ERRMSG, INPUT_F_ERR_TITLE, MB_OK | MB_ICONSTOP); 
    sprintf (lbuf, "%1.4f", oldval);
    pCWnd->SetWindowText (lbuf);
    return((float)-1.9876e-36);
  }
  sprintf (lbuf, "%1.4f", f);
  pCWnd->SetWindowText (lbuf);
  return(f);
}


// This function handles a byte input in a dialog
void HandleByteInput(CWnd * pCWnd, AGSIADDR sfr) {
  DWORD oldval, oldvalp, tmp;

  Agsi.ReadSFR(sfr, &oldval, &oldvalp, 0xFF);
  tmp = GetDlg8BNumber (pCWnd, oldval);
  if (tmp != -1) {
    Agsi.WriteSFR(sfr, tmp, 0xFF);
	Agsi.UpdateWindows();
  }
}

// This function handles a word input in a dialog
void HandleWordInput(CWnd * pCWnd, AGSIADDR sfrl, AGSIADDR sfrh) {
  DWORD oldval, tmp, tmpp;

  Agsi.ReadSFR(sfrl, &tmp, &tmpp, 0xFF);
  oldval = tmp;
  Agsi.ReadSFR(sfrh, &tmp, &tmpp, 0xFF);
  oldval += tmp << 8;
  tmp = GetDlg16BNumber (pCWnd, oldval);
  if (tmp != -1) {
    Agsi.WriteSFR(sfrl, tmp, 0xFF);
    Agsi.WriteSFR(sfrh, tmp >> 8, 0xFF);
	Agsi.UpdateWindows();
  }
}

// This function handles a 3 byte input in a dialog
void Handle3ByteInput(CWnd * pCWnd, AGSIADDR sfrl, AGSIADDR sfrh, AGSIADDR sfrp) {
  DWORD oldval, tmp, tmpp;

  Agsi.ReadSFR(sfrl, &tmp, &tmpp, 0xFF);
  oldval = tmp;
  Agsi.ReadSFR(sfrh, &tmp, &tmpp, 0xFF);
  oldval += tmp << 8;
  Agsi.ReadSFR(sfrp, &tmp, &tmpp, 0xFF);
  oldval += tmp << 16;
  tmp = GetDlg24BNumber (pCWnd, oldval);
  if (tmp != -1) {
    Agsi.WriteSFR(sfrl, tmp, 0xFF);
    Agsi.WriteSFR(sfrh, tmp >> 8, 0xFF);
    Agsi.WriteSFR(sfrp, tmp >> 16, 0xFF);
	Agsi.UpdateWindows();
  }
}

// This function handles a float number input in a dialog
void HandleFloatInput(CWnd * pCWnd, AGSIVTR vtr) {
  union fv tmp;
  float result;

  Agsi.ReadVTR(vtr, &tmp.DW);
  result = GetDlgFloat (pCWnd, tmp.f);
  if (result != -1.9876e-36) {
	tmp.f = result;
    Agsi.WriteVTR(vtr, tmp.DW);
  }
}

// This function is intended to be called when a checkbox is clicked (SFR bit)
void WriteBit(AGSIADDR sfr, DWORD mask, DWORD set) {
  DWORD value;

  value = (set == 0) ? 0 : 0xFF;
  Agsi.WriteSFR(sfr, value, mask);
  Agsi.UpdateWindows();
}

// This function is intended to be called when a checkbox is clicked (VTR bit)
void WriteBitVTR(AGSIVTR vtr, DWORD mask, DWORD set) {
  DWORD value;	

  Agsi.ReadVTR(vtr, &value);
  if (set) value |= mask;
  else value &= ~mask;
  Agsi.WriteVTR(vtr, value);
  Agsi.UpdateWindows();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日精品一区二区| 亚洲综合清纯丝袜自拍| 91麻豆国产在线观看| 蜜桃视频一区二区三区| 一区二区中文视频| 欧美电影免费观看完整版| av午夜精品一区二区三区| 久久99精品国产麻豆婷婷| 99久久99久久精品国产片果冻| 国产片一区二区| 日韩免费观看高清完整版在线观看| 国产高清久久久久| 秋霞成人午夜伦在线观看| 中文字幕综合网| 欧美精品一区视频| 777久久久精品| 大陆成人av片| 日韩电影网1区2区| 国产亚洲人成网站| k8久久久一区二区三区| 国产日韩成人精品| 成人黄色免费短视频| 亚洲欧美成人一区二区三区| av在线播放成人| 亚洲大尺度视频在线观看| 91精品国产综合久久福利软件| 日韩欧美成人午夜| 欧美在线你懂得| 91久久人澡人人添人人爽欧美| 成人中文字幕合集| 国产成都精品91一区二区三 | 亚洲与欧洲av电影| 中文字幕一区二区三区av| 久久精品日韩一区二区三区| 日韩视频中午一区| 日韩三级在线免费观看| 91九色最新地址| 99视频在线观看一区三区| 国产最新精品免费| 国产又粗又猛又爽又黄91精品| 老司机午夜精品99久久| 免费在线观看不卡| 精品一区二区免费| 国产综合久久久久久久久久久久| 久久www免费人成看片高清| 麻豆成人久久精品二区三区红| 久久se这里有精品| 国产一区二区三区精品欧美日韩一区二区三区 | 丰满少妇久久久久久久| 国产精品原创巨作av| 成人黄色电影在线| 欧美日韩中文一区| 男人操女人的视频在线观看欧美| 午夜精品久久久久久| 午夜不卡在线视频| 蜜臀av性久久久久av蜜臀妖精| 麻豆精品精品国产自在97香蕉| 精品亚洲porn| 国产精品小仙女| aaa欧美日韩| 精品视频999| 日韩欧美区一区二| 国产精品天干天干在观线| 亚洲免费看黄网站| 日韩va欧美va亚洲va久久| 国产综合久久久久久鬼色| 99久久99久久免费精品蜜臀| 精品污污网站免费看| 精品国产乱码久久久久久闺蜜| 国产人成一区二区三区影院| 一区二区视频免费在线观看| 热久久久久久久| 高清国产一区二区| 亚洲午夜羞羞片| 亚洲欧洲精品天堂一级| 一区二区免费视频| 欧美一区二区高清| 美腿丝袜亚洲三区| 国产河南妇女毛片精品久久久| 成人午夜av电影| 欧美三级视频在线播放| 2024国产精品| 亚洲最新在线观看| 精品一区二区成人精品| 99久久精品免费看| 91精品国产综合久久久久| 国产欧美日本一区视频| 婷婷开心激情综合| 99视频超级精品| 精品国产免费一区二区三区四区| 18欧美乱大交hd1984| 乱一区二区av| 欧美性受xxxx黑人xyx性爽| 精品成人佐山爱一区二区| 亚洲影院久久精品| 国产高清成人在线| 日韩女优电影在线观看| 亚洲三级在线看| 国内外成人在线| 欧美蜜桃一区二区三区| 中文字幕亚洲一区二区va在线| 日韩福利视频导航| 在线观看视频一区二区| 欧美国产激情一区二区三区蜜月| 美女国产一区二区| 五月天久久比比资源色| 国产91对白在线观看九色| 欧美精品三级日韩久久| 亚洲免费观看高清| 国产精品99久久久久久似苏梦涵 | 日韩综合小视频| 色网综合在线观看| 国产精品免费人成网站| 国产亚洲精品bt天堂精选| 久久精品日产第一区二区三区高清版| 首页国产欧美久久| 在线免费一区三区| 亚洲欧美激情视频在线观看一区二区三区 | 91精品国产91热久久久做人人| 亚洲日本va在线观看| 成人h动漫精品一区二区| 久久亚洲精品国产精品紫薇| 日韩国产在线一| 欧美精品日韩综合在线| 亚洲一二三四久久| 欧美亚洲一区二区在线| 亚洲影院理伦片| 久久久久久日产精品| 久久这里只有精品首页| 天天色图综合网| 欧美午夜免费电影| 夜夜揉揉日日人人青青一国产精品| 99国产精品久| 最新国产の精品合集bt伙计| proumb性欧美在线观看| 中文字幕在线观看一区二区| 高清在线成人网| 中文字幕字幕中文在线中不卡视频| 不卡的av网站| 一区二区三区四区激情| 欧美日韩在线精品一区二区三区激情| 亚洲五码中文字幕| 91超碰这里只有精品国产| 丝袜国产日韩另类美女| 91精品国产综合久久久蜜臀粉嫩 | 伊人夜夜躁av伊人久久| 91久久精品一区二区| 亚洲国产精品一区二区久久| 欧美日本在线播放| 久久91精品久久久久久秒播| 精品99一区二区| 国产精品一区2区| 日本高清不卡视频| 成人av第一页| 五月激情综合色| 欧美日韩精品高清| 免费成人在线播放| 国产欧美日韩激情| 91污在线观看| 日本中文字幕不卡| 久久久99久久精品欧美| 91在线播放网址| 日韩av成人高清| 久久久久青草大香线综合精品| 成人18视频在线播放| 亚洲综合免费观看高清完整版 | 日韩午夜激情视频| 国产精品资源网站| 一二三区精品视频| 精品美女在线播放| 色综合久久六月婷婷中文字幕| 香蕉久久夜色精品国产使用方法 | 亚洲视频一二区| 欧美色图激情小说| 国产又粗又猛又爽又黄91精品| 日韩码欧中文字| 亚洲日本免费电影| 三级不卡在线观看| 久久综合国产精品| 色婷婷激情一区二区三区| 男人操女人的视频在线观看欧美| 国产欧美日韩另类视频免费观看| 欧美日韩你懂得| 国产成人自拍高清视频在线免费播放| 亚洲美女电影在线| 精品国产91九色蝌蚪| 色综合咪咪久久| 国内成+人亚洲+欧美+综合在线| 亚洲精品视频观看| 亚洲精品一区二区精华| 欧美日韩亚洲综合一区二区三区| 国产一区二区三区在线观看免费视频 | 日韩极品在线观看| 中文字幕一区二区三区四区不卡| 欧美巨大另类极品videosbest | 自拍偷拍欧美激情| 精品日韩在线观看| 欧美日韩高清影院| 亚洲欧美影音先锋| 日韩亚洲欧美综合|