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

📄 windows.txt

📁 嵌入式系统开发 TOPPERS and JSP Kernel Release 1.3 TOPPERS = Toyohashi Open Platform for Embedded Real-Tim
💻 TXT
📖 第 1 页 / 共 4 页
字号:
----------------------------------------5.1.1 デバイスエミュレ〖ション茨董の侯喇----------------------------------------デバイスエミュレ〖ション怠菇は3つのプログラムからなる。    ˇカ〖ネル        デバイスを扩告するアプリケ〖ションが烹很されたプログラム。サ〖ビ        ス滦据となるカ〖ネルはシステム柒で帽办 (弹瓢するだけなら剩眶材)。    ˇデバイスマネ〖ジャ        カ〖ネルからの妥滇に滦して努磊なデバイスに妥滇を搀流するプログラ        ム。カ〖ネルまたはデバイスが弹瓢するとCOMによって极瓢弄に弹瓢する。        システム柒で帽办。    ˇデバイス        デバイスのエミュレ〖ションを乖うプログラム。カ〖ネルから券乖され        た妥滇にしたがって借妄を乖う。マッピング鄂粗が脚剩しなければ剩眶        弹瓢材墙。VisualBASICを网脱することもできる。カ〖ネルのデバイスエミュレ〖ション怠墙の侯喇に簇しては 3.4デバイスエミュレ〖ション を徊救されたい。デバイスマネ〖ジャおよびVisualBASIC脱デバイスコントロ〖ルの侯喇には肌のツ〖ルが涩妥になる。    ˇMicrosoft Visual C++ 6.0    ˇMicrosoft VisualBASIC 6.0    ˇCOM悸乖茨董 (Windows 98/NT4/2000 または Windows95 + DCOM for Win95)    ˇActive Template Library 3.0 (Visual C++ 6.0に崔まれる)デバイスマネ〖ジャ(COM惹)は肌のようにして侯喇する。答塑弄に·ビルドを乖うだけでサ〖バ判峡およびプロキシ/スタブ判峡を乖うˉ   (0. アクティブな菇喇の肋年をDebugにするか、毋嘲件りの肋年を恃える)    1. Visual C++を弹瓢し、プロジェクトワ〖クスペ〖スdevicemanager.dswを        倡く    2. ビルドを乖う    3. OLE Viewを弹瓢し、Interfacesの面にIDeviceとIKernelがあることを        澄千する (プロキシ/スタブDLLのインスト〖ル澄千) プロキシ/スタブDLLが赖しく瞥掐されない眷圭は·肌の侯度を妥するˉ    1. コマンドプロンプトを弹瓢する    2. Visual C++をインスト〖ルしたディレクトリのbin/VCVARS32.BATを悸乖し        簇息ツ〖ルが蝗えるようにする    3. プロジェクトのあるディレクトリへ败瓢する    4. 肌のコマンドを悸乖する        nmake devicemanagerps.mk    5. 肌のコマンドを悸乖する        regsvr32 devicemanagerps.dll デバイスマネ〖ジャ(COM惹)の悸乖プログラムの眷疥を败瓢したい眷圭には、 肌の侯度を妥するˉ    1. devicemanager.exeを败瓢する    2. 败瓢した黎で、肌のコマンドを悸乖する        regsvr32 devicemanager.exeデバイスマネ〖ジャ(COM惹)を败瓢する眷圭には、肌の侯度を妥する。    1. コマンドプロンプトを弹瓢し、悸乖ファイルを败瓢させる    2. 败瓢させた稿、オプション "/RegServer" をつけて悸乖する        > devicemanager.exe /RegServerデバイスマネ〖ジャ(COM惹)を猴近する眷圭には、肌の侯度を妥する。    1. コマンドプロンプトからオプション "/UnregServer" をつけて悸乖する        > devicemanager.exe /UnregServer    2. 悸乖ファイルを猴近するVisualBASIC脱デバイスコントロ〖ル(COM惹)の侯喇には、肌の侯度を妥する。答塑弄に·ビルドを乖うだけでサ〖バ判峡およびプロキシ/スタブ判峡を乖うˉ    1. Visual C++を弹瓢し、プロジェクトワ〖クスペ〖スdevice.dswを倡く    2. ビルドを乖う    3. OLEViewを弹瓢し、InterfacesにIDeviceControlがあることを        澄千するVisualBASIC脱デバイスコントロ〖ル(COM惹)の败瓢には、肌の侯度を妥する。    1. device.dllを败瓢する    2. コマンドプロンプトから肌のコマンドを券乖する        regsvr32 (败瓢黎)\device.dllVisualBASIC脱デバイスコントロ〖ル(COM惹)の猴近には、肌の侯度を妥する。    1. コマンドプロンプトから肌のコマンドを券乖する        regsvr32 /u (インスト〖ル黎)\device.dll    2. DLLを猴近する------------------------------------------------------5.1.2 VisualBASIC脱デバイスコントロ〖ル(COM惹)の蝗い数------------------------------------------------------TOPPERS/JSP Windows のデバイスエミュレ〖ションで网脱されるデバイスは、VisualBASICを网脱しても侯喇材墙である。VisualBASICを网脱することで、没箕粗でエミュレ〖タを侯喇できる。塑灌ではVisualBASIC脱デバイスコントロ〖ルの车妥と、词帽な侯喇缄界を绩す。TOPPERS/JSP on Windows Device Componentで捏丁される怠墙は肌の奶りオブジェクト DeviceControl    メソッド Public Sub Connect()        デバイスマネ〖ジャとの奶慨を澄惟させる。        澄惟涟にConnect笆嘲のメソッドを悸乖すると己窃する。        己窃するとE_FAILが手る。        メソッド Public Sub Close()        デバイスマネ〖ジャとの奶慨を姜位する。        己窃するとE_FAILが手る。    メソッド Public Sub RaiseInterrupt(ByVal inhno as long)        カ〖ネルプロセスにハンドラ戎规inhnoの充哈みを券栏させる。        己窃するとE_FAILが手る。    メソッド Public Sub Map(ByVal address as long, ByVal size as long)        このデバイスをアドレスaddressからsizeバイトのサイズでマッピングする。        笆稿、滦据挝拌にアクセスがあると、イベントが券栏する。        メソッド Public Sub Unmap(ByVal address as long)        アドレスaddressを崔むようなマップ貉み挝拌のマッピングを豺近する。        笆稿、滦据挝拌にアクセスがあってもイベントは券栏しない。        プロパティ Public Valid as BOOL [R]        このデバイスが铜跟であるときにはTrueとなる。        プロパティ Public IsKernelStarted as BOOL [R]        カ〖ネルが弹瓢しているとTrueとなる。        プロパティ Public Offset as long [RW]        流减慨デ〖タバッファのオフセット疤弥を回年/艰评する。        帽疤はバイト帽疤である。        プロパティ Public AccessSize as short [RW]        アクセス帽疤を回年/艰评する。        眶猛は1,2,4のいずれかである。        プロパティ Public Value as long [RW]        プロパティOffsetの疤弥からプロパティAccessSizeバイトの        リトルエンディアンに骄い眶猛山附したものを艰评/肋年する。        アクセスが乖われるとOffsetの猛をAccessSizeだけ笼裁させる。                イベントOnRead箕における粕哈みは痰跟となる。        イベントOnWrite箕における今き哈みは痰跟となる。        イベント Private Sub OnRead(ByVal address as long, ByVal sz as long)        カ〖ネルからaddress戎孟に滦するszバイトの粕哈みがあったことを奶        梦する。デバイスはその手批となる猛を呈羌しなければならない。        イベント券栏箕にはOffsetは撅に0となる。        OnReadイベント券栏箕にはValueに滦する粕哈みはできない。            イベント Private Sub OnWrite(ByVal address as long, ByVal sz as long)        カ〖ネルからaddress戎孟に滦するszバイトの今哈みがあったことを奶        梦する。デバイスはその猛から努磊な借妄を乖わなければならない。        イベント券栏箕にはOffsetは撅に0となる。        OnWriteイベント券栏箕にはValueに滦する今き哈みはできない。        イベント Private Sub OnKernelStart()        カ〖ネルが弹瓢したことを奶梦する。        イベント Private Sub OnKernelExit()        カ〖ネルが姜位したことを奶梦する。デバイスオブジェクトは流减慨デ〖タを词帽に胺うために、柒婶にバッファ怠菇を积っている。このバッファ怠菇はプロパティAccessSize, Offset, Valueの3つを网脱して艰评/肋年することが材墙となる。毋として、カ〖ネルから0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xefという8バイトのデ〖タが流られてきた眷圭、Valueに呈羌されているデ〖タはそれぞれAccessSizeに骄って肌のように艰评される。またValueにアクセスすると极瓢弄にOffsetがAccessSize尸インクリメントされるため、息鲁して艰评すると息鲁するデ〖タを艰评することになる。        山: AccessSizeによるValueの猛の恃步        +----+----------------------------+        |    |          AccessSize        |        |搀眶+------+--------+------------+        |    |   1  |     2  |      4     |        +----+------+--------+------------+        +----+------+--------+------------+        |  1 | 0x01 | 0x2301 | 0x67452301 |        |  2 | 0x23 | 0x6745 | 0xefcdab89 |        |  3 | 0x45 | 0xab89 |  -踏年盗-  |        |  4 | 0x67 | 0xefcd |  -踏年盗-  |        |  5 | 0x89 | 踏年盗 |  -踏年盗-  |        |  6 | 0xab | 踏年盗 |  -踏年盗-  |        |  7 | 0xcd | 踏年盗 |  -踏年盗-  |        |  8 | 0xef | 踏年盗 |  -踏年盗-  |        |  9 |踏年盗| 踏年盗 |  -踏年盗-  |        +----+------+--------+------------+sample1.cを猖陇して、附哼瓢いているタスク戎规を山绩するようなデバイスを侯喇する缄界を绩す。1. Visual C++ を弹瓢し、カ〖ネルのプロジェクトを倡く2. sys_defs.hのDEVICE_ENABLEのコメントを嘲し、デバイスを铜跟にする3. プロジェクトのファイル办枉を叫し、device.cがあればプロジェクトから猴近する4. config/windows/device_com.cppをプロジェクトに纳裁する5. sample1.cにdevice.hをインクル〖ドする6. sample1.c:87のsyslogの缄涟に肌の乖を掐れる    DeviceWrite(0x1234,1, (unsigned char)tskno);        #この炭吾によってポ〖ト0x1234戎孟に1バイトのレジスタを积つ        #デバイスにデ〖タを叫蜗できる7. ビルドする8. VisualBASICを弹瓢し、≈筛洁EXE∽を联买し、倡く9. メニュ〖から≈プロジェクト -> コンポ〖ネント∽を联买する10.コントロ〖ルの面から    ≈TOPPERS/JSP on Windows Device Component Type Library∽をチェックして、    OKを病す。11.ツ〖ルボックスからDeviceControlを联买し、フォ〖ムに沤る(DeviceControl1)12.ラベルをひとつフォ〖ムに沤る(Label1)13.フォ〖ムをダブルクリックし、Form_Loadを悸刘する    Private Sub Form_Load()        DeviceControl1.connect       'デバイスマネ〖ジャと儡鲁する        DeviceControl1.Map &H1234, 1 '0x1234戎孟に1バイトのレジスタをマップする    End Sub14.鲁いてForm_Unloadを悸刘する    Private Sub Form_Unload(Cancel As Integer)        DeviceControl1.Close    'デバイスマネ〖ジャとの儡鲁を豺近する    End Sub15.减慨箕の瓢侯を淡揭するために、DeviceControl1_OnWriteを悸刘する    Private Sub DeviceControl1_OnWrite(ByVal address As Long, ByVal sz As Long)        Label1 = Str(DeviceControl1.Value)    End Sub

⌨️ 快捷键说明

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