[BTS200肆]一步一步学习BizTalk200四 Sql Server Adapter

证实:那是发表在自家原本的blog上的,前几日将它整理到此处。

//=====================================================================
//TITLE:
//    GPIO驱动伊始
//AUTHOR:
//    norains
//DATE:
//    Saturday  9-October-2010
//Environment:
//    KEIL MDK 4.0
//    .NET Micro Framework Porting 4.1
//    RedCow Board
//=====================================================================

由此这一次学习,你能够明白如下技术:

 

  1. 创制BTS项目、使用BTS业务流程设计器中的接收、发送、调用流程、映射
  2. 安顿SQL Adapter接收端口
  3. 配备SQL 艾达pter发送端口
  4. 应用BizTalk Explore来绑定端口

    .NET Micro Framework
Porting下所谓的驱动,其实际只然则是贯彻微软所留出来的接口函数。比如,以GPIO为例子,借使你想在.NET
Micro Framework不奇怪驱动GPIO,那么作为开发者的您,必须求兑现如下函数:

自拟了一个项目。项目需求如下:

BOOL CPU_GPIO_Initialize (); BOOL CPU_GPIO_Uninitialize (); UINT32
CPU_GPIO_Attributes ( GPIO_PIN Pin ); void CPU_GPIO_DisablePin (
GPIO_PIN Pin, GPIO_RESISTOR ResistorState, UINT32 Direction,
GPIO_ALT_MODE AltFunction ); void CPU_GPIO_EnableOutputPin(
GPIO_PIN Pin, BOOL InitialState ); BOOL CPU_GPIO_EnableInputPin (
GPIO_PIN Pin, BOOL GlitchFilterEnable,
GPIO_INTERRUPT_SERVICE_ROUTINE PIN_ISR, GPIO_INT_EDGE IntEdge,
GPIO_RESISTOR ResistorState ); BOOL CPU_GPIO_EnableInputPin2(
GPIO_PIN Pin, BOOL GlitchFilterEnable,
GPIO_INTERRUPT_SERVICE_ROUTINE PIN_ISR, void* ISR_Param,
GPIO_INT_EDGE IntEdge, GPIO_RESISTOR ResistorState ); BOOL
CPU_GPIO_GetPinState ( GPIO_PIN Pin ); void CPU_GPIO_SetPinState (
GPIO_PIN Pin, BOOL PinState ); BOOL CPU_GPIO_PinIsBusy ( GPIO_PIN
Pin ); BOOL CPU_GPIO_ReservePin ( GPIO_PIN Pin, BOOL fReserve );
UINT32 CPU_GPIO_GetDebounce (); BOOL CPU_GPIO_SetDebounce ( INT64
debounceTimeMilliseconds ); INT32 CPU_GPIO_GetPinCount (); void
CPU_GPIO_GetPinsMap ( UINT8* pins, size_t size ); UINT8
CPU_GPIO_GetSupportedResistorModes(GPIO_PIN pin ); UINT8
CPU_GPIO_GetSupportedInterruptModes(GPIO_PIN pin );

1.创办一张表,那张表用来保存要输入的音信内容。如 myname , price ,
number。

 

2.创制一张表,用来保存 myName , price * number的结果。

    那几个函数在.NET Micro Framework
Porting唯有证明,未有落实,因为实现是大家所须求做的。那样的支出格局,和Windows
CE下的驱动有异曲同工之妙,基本上就类似于试卷上的填空题。

3.个中的预计进度用BTS完毕

 


   
为啥作品起名称为“初步”呢?因为本文的内容,只兑现了GPIO的壹对基础意义,比如初阶化,输出高低电平,读取输入的电平等等。就算看起来内容不少,但有一个要命首要的效果还未曾兑现,正是输入中断的拍卖。具体来说,约等于CPU_GPIO_EnableInputPin和CPU_GPIO_EnableInputPin②并不曾完全落实微软显著的成效。但是呢,事情接贰连三从不难到复杂的,我们无妨先来看看雏形吧,至于更完整的,待大家继续再语。若是您是急天性,十万火急想一窥全貌,那么提出你看看叶帆的《【.Net
Micro Framework PortingKit –
0八】GPIO驱动》(http://blog.csdn.net/yefanqiu/archive/2010/01/20/5218846.aspx),该文已经有完全的消除思路。如果您不急,那么我们明天就一步一步来探视雏形的贯彻吗!

 

 

以下记录了此番学习的全经过(符图例)

   
壹.比方你的目录未有STUB_GPIO的话,那么将./DeviceCode/Drivers/Stubs/Processor/stubs_gpio文件夹拷贝到.
/Solutions/STM32F十三ZE_RedCow/DeviceCode,并按微软的老规矩,将那拷贝落成的文本夹改名称为GPIO_HAL。

现分步实行验证

 

 

    二.开拓拷贝过来的dotNetMF.proj文件,将内容改动如下:

一.创办数据库
要到位SQL
Adapter的测试,首先要有四个运营环境。那里笔者成立三个新的数据。在那个Curry创造七个表来完开支次学习。

<Project ToolsVersion=”4.0″ DefaultTargets=”Build”
xmlns=”
http://schemas.microsoft.com/developer/msbuild/2003“>
  <PropertyGroup>
   
<AssemblyName>GPIO_HAL_STM32F103ZE_RedCow</AssemblyName>
   
<ProjectGuid>{9fe65202-d536-4d38-a2bb-5948f020bf67}</ProjectGuid>
    <Size>
    </Size>
    <Description>GPIO stub library</Description>
    <Level>HAL</Level>
   
<LibraryFile>GPIO_HAL_STM32F103ZE_RedCow.$(LIB_EXT)</LibraryFile>
   
<ProjectPath>$(SPOCLIENT)/Solutions/STM32F103ZE_RedCow/DeviceCode/GPIO_HAL/dotNetMF.proj</ProjectPath>
   
<ManifestFile>GPIO_HAL_STM32F103ZE_RedCow.$(LIB_EXT).manifest</ManifestFile>
    <Groups>Processor/stubs</Groups>
    <LibraryCategory>
      <MFComponent
xmlns:xsi=”
http://www.w3.org/2001/XMLSchema-instance
xmlns:xsd=”
http://www.w3.org/2001/XMLSchema
Name=”GPIO_HAL” Guid=”{33AB74F7-8DD4-4766-95A8-E221B80F611C}”
ProjectPath=”” Conditional=”” xmlns=””>
        <VersionDependency
xmlns=”
http://schemas.microsoft.com/netmf/InventoryFormat.xsd“>
          <Major>4</Major>
          <Minor>0</Minor>
          <Revision>0</Revision>
          <Build>0</Build>
          <Extra />
          <Date>2009-04-30</Date>
        </VersionDependency>
        <ComponentType
xmlns=”
http://schemas.microsoft.com/netmf/InventoryFormat.xsd”>LibraryCategory</ComponentType>
      </MFComponent>
    </LibraryCategory>
    <Documentation>
    </Documentation>
    <PlatformIndependent>False</PlatformIndependent>
    <CustomFilter>
    </CustomFilter>
    <Required>False</Required>
    <IgnoreDefaultLibPath>False</IgnoreDefaultLibPath>
    <IsStub>True</IsStub>
   
<Directory>Solutions/STM32F103ZE_RedCow/DeviceCode/GPIO_HAL</Directory>
    <OutputType>Library</OutputType>
   
<PlatformIndependentBuild>false</PlatformIndependentBuild>
    <Version>4.0.0.0</Version>
  </PropertyGroup>
  <Import
Project=”$(SPOCLIENT)/tools/targets/Microsoft.SPOT.System.Settings”
/>
  <PropertyGroup />
  <ItemGroup>
    <Compile Include=”stubs_functions_gpio.cpp” />
    <Compile Include=”GPIO_Adapter.cpp” />
  </ItemGroup>
  <ItemGroup />
 <ItemGroup>  
    <DriverLibs Include=”STM32F10x_StdPeriph_Driver.$(LIB_EXT)”
/>
    <RequiredProjects
Include=”$(SPOCLIENT)/Solutions/STM32F103ZE_RedCow/DeviceCode/Libraries/Libraries.proj”
/>
  </ItemGroup>   
  <ItemGroup>
    <IncludePaths
Include=”Solutions/STM32F103ZE_RedCow/DeviceCode/Libraries/Configure”
/>
  <IncludePaths
Include=”Solutions/STM32F103ZE_RedCow/DeviceCode/Libraries/STM32F10x_StdPeriph_Driver/inc”
/>
   <IncludePaths
Include=”Solutions/STM32F103ZE_RedCow/DeviceCode/Libraries/CMSIS/Core/CM3/”
/>    
  </ItemGroup>
  <Import
Project=”$(SPOCLIENT)/tools/targets/Microsoft.SPOT.System.Targets”
/>
</Project>

图片 1

 

二.为数据库起名
图片 2

    3.打开拷贝过来的stubs_functions_gpio.cpp文件,输入如下内容:

3.添加叁个新表(BTS从这张表中接收数据)
图片 3

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) Microsoft Corporation. All rights reserved.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <tinyhal.h> #include “GPIO_Adapter.h” //–// BOOL
CPU_GPIO_Initialize() { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA
| RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |
RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE |
RCC_APB2Periph_GPIOF, ENABLE); return TRUE; } BOOL
CPU_GPIO_Uninitialize() {
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB
| RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD |
RCC_APB2Periph_GPIOE | RCC_APB2Periph_GPIOF, DISABLE); return TRUE;
} UINT32 CPU_GPIO_Attributes( GPIO_PIN Pin ) { if(IsValidPin(Pin) !=
FALSE) { return (GPIO_ATTRIBUTE_INPUT | GPIO_ATTRIBUTE_OUTPUT); }
else { return GPIO_ATTRIBUTE_NONE; } } void CPU_GPIO_DisablePin(
GPIO_PIN Pin, GPIO_RESISTOR ResistorState, UINT32 Direction,
GPIO_ALT_MODE AltFunction ) { } void CPU_GPIO_EnableOutputPin(
GPIO_PIN Pin, BOOL InitialState ) { GPIO_InitTypeDef
GPIO_InitStructure; //Set the pin index GPIO_InitStructure.GPIO_Pin =
PinToBit(Pin); //Set the default frequency as 50MHz
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //Output mode
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //Initialize
GPIO_Init(PinToPort(Pin), &GPIO_InitStructure); //Set the pin initial
state CPU_GPIO_SetPinState(Pin,InitialState); } BOOL
CPU_GPIO_EnableInputPin( GPIO_PIN Pin, BOOL GlitchFilterEnable,
GPIO_INTERRUPT_SERVICE_ROUTINE PIN_ISR, GPIO_INT_EDGE IntEdge,
GPIO_RESISTOR ResistorState ) { return CPU_GPIO_EnableInputPin2( Pin,
GlitchFilterEnable, PIN_ISR, NULL, IntEdge, ResistorState ); } BOOL
CPU_GPIO_EnableInputPin2( GPIO_PIN Pin, BOOL GlitchFilterEnable,
GPIO_INTERRUPT_SERVICE_ROUTINE PIN_ISR, void* ISR_Param,
GPIO_INT_EDGE IntEdge, GPIO_RESISTOR ResistorState ) {
GPIO_InitTypeDef GPIO_InitStructure; //Set the pin index
GPIO_InitStructure.GPIO_Pin = PinToBit(Pin); //Set the default
frequency as 50MHz GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
//Input mode switch(ResistorState) { case RESISTOR_PULLDOWN:
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; break; case
RESISTOR_PULLUP: GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
break; default: GPIO_InitStructure.GPIO_Mode =
GPIO_Mode_IN_FLOATING; } //Initialize GPIO_Init(PinToPort(Pin),
&GPIO_InitStructure); return TRUE; } BOOL CPU_GPIO_GetPinState(
GPIO_PIN Pin ) { return GPIO_ReadInputDataBit(PinToPort(Pin),
PinToBit(Pin)); } void CPU_GPIO_SetPinState( GPIO_PIN Pin, BOOL
PinState ) { if(PinState == FALSE) { //Output low level
GPIO_ResetBits(PinToPort(Pin), PinToBit(Pin)); } else { //Output high
level GPIO_SetBits(PinToPort(Pin), PinToBit(Pin)); } } BOOL
CPU_GPIO_PinIsBusy( GPIO_PIN Pin ) { return FALSE; } BOOL
CPU_GPIO_ReservePin( GPIO_PIN Pin, BOOL fReserve ) { return FALSE; }
UINT32 CPU_GPIO_GetDebounce() { return 0; } BOOL
CPU_GPIO_SetDebounce( INT64 debounceTimeMilliseconds ) { return FALSE;
} INT32 CPU_GPIO_GetPinCount() { return 112; // 7 * 16 } void
CPU_GPIO_GetPinsMap( UINT8* pins, size_t size ) { pins = NULL; }
UINT8 CPU_GPIO_GetSupportedResistorModes( GPIO_PIN pin ) { // as it
is stub, return 0; return 0; } UINT8
CPU_GPIO_GetSupportedInterruptModes( GPIO_PIN pin ) { // as it is
stub, return 0; return 0; }

4.保存新建表,并起名
图片 4

 

伍.创制另一张表(用来得到周转后的结果)
图片 5

    4.
stubs_functions_gpio.cpp用到了GPIO_Adapter文件,该文件是当做.NET
Micro Framework
Porting和stm3二f拾x_stdperiph_lib连接的大桥,其具体贯彻如下:

六.为表起名
图片 6

 

柒.创办2个消除方案
图片 7

     头文件GPIO_Adapter.h:

8.开立一个BTS项目
图片 8

#include <tinyhal.h> #include “stm32f10x_conf.h” //The gpio pin
#define GPIO_A00 ((GPIO_PIN)0x00000001) #define GPIO_A01
((GPIO_PIN)0x00000002) #define GPIO_A02 ((GPIO_PIN)0x00000004)
#define GPIO_A03 ((GPIO_PIN)0x00000008) #define GPIO_A04
((GPIO_PIN)0x00000010) #define GPIO_A05 ((GPIO_PIN)0x00000020)
#define GPIO_A06 ((GPIO_PIN)0x00000040) #define GPIO_A07
((GPIO_PIN)0x00000080) #define GPIO_A08 ((GPIO_PIN)0x00000100)
#define GPIO_A09 ((GPIO_PIN)0x00000200) #define GPIO_A10
((GPIO_PIN)0x00000400) #define GPIO_A11 ((GPIO_PIN)0x00000800)
#define GPIO_A12 ((GPIO_PIN)0x00001000) #define GPIO_A13
((GPIO_PIN)0x00002000) #define GPIO_A14 ((GPIO_PIN)0x00004000)
#define GPIO_A15 ((GPIO_PIN)0x00008000) #define GPIO_A_ALL
((GPIO_PIN)0x0000FFFF) #define GPIO_B00 ((GPIO_PIN)0x00010001)
#define GPIO_B01 ((GPIO_PIN)0x00010002) #define GPIO_B02
((GPIO_PIN)0x00010004) #define GPIO_B03 ((GPIO_PIN)0x00010008)
#define GPIO_B04 ((GPIO_PIN)0x00010010) #define GPIO_B05
((GPIO_PIN)0x00010020) #define GPIO_B06 ((GPIO_PIN)0x00010040)
#define GPIO_B07 ((GPIO_PIN)0x00010080) #define GPIO_B08
((GPIO_PIN)0x00010100) #define GPIO_B09 ((GPIO_PIN)0x00010200)
#define GPIO_B10 ((GPIO_PIN)0x00010400) #define GPIO_B11
((GPIO_PIN)0x00010800) #define GPIO_B12 ((GPIO_PIN)0x00011000)
#define GPIO_B13 ((GPIO_PIN)0x00012000) #define GPIO_B14
((GPIO_PIN)0x00014000) #define GPIO_B15 ((GPIO_PIN)0x00018000)
#define GPIO_B_ALL ((GPIO_PIN)0x0001FFFF) #define GPIO_C00
((GPIO_PIN)0x00020001) #define GPIO_C01 ((GPIO_PIN)0x00020002)
#define GPIO_C02 ((GPIO_PIN)0x00020004) #define GPIO_C03
((GPIO_PIN)0x00020008) #define GPIO_C04 ((GPIO_PIN)0x00020010)
#define GPIO_C05 ((GPIO_PIN)0x00020020) #define GPIO_C06
((GPIO_PIN)0x00020040) #define GPIO_C07 ((GPIO_PIN)0x00020080)
#define GPIO_C08 ((GPIO_PIN)0x00020100) #define GPIO_C09
((GPIO_PIN)0x00020200) #define GPIO_C10 ((GPIO_PIN)0x00020400)
#define GPIO_C11 ((GPIO_PIN)0x00020800) #define GPIO_C12
((GPIO_PIN)0x00021000) #define GPIO_C13 ((GPIO_PIN)0x00022000)
#define GPIO_C14 ((GPIO_PIN)0x00024000) #define GPIO_C15
((GPIO_PIN)0x00028000) #define GPIO_C_ALL ((GPIO_PIN)0x0002FFFF)
#define GPIO_D00 ((GPIO_PIN)0x00030001) #define GPIO_D01
((GPIO_PIN)0x00030002) #define GPIO_D02 ((GPIO_PIN)0x00030004)
#define GPIO_D03 ((GPIO_PIN)0x00030008) #define GPIO_D04
((GPIO_PIN)0x00030010) #define GPIO_D05 ((GPIO_PIN)0x00030020)
#define GPIO_D06 ((GPIO_PIN)0x00030040) #define GPIO_D07
((GPIO_PIN)0x00030080) #define GPIO_D08 ((GPIO_PIN)0x00030100)
#define GPIO_D09 ((GPIO_PIN)0x00030200) #define GPIO_D10
((GPIO_PIN)0x00030400) #define GPIO_D11 ((GPIO_PIN)0x00030800)
#define GPIO_D12 ((GPIO_PIN)0x00031000) #define GPIO_D13
((GPIO_PIN)0x00032000) #define GPIO_D14 ((GPIO_PIN)0x00034000)
#define GPIO_D15 ((GPIO_PIN)0x00038000) #define GPIO_D_ALL
((GPIO_PIN)0x0003FFFF) #define GPIO_E00 ((GPIO_PIN)0x00040001)
#define GPIO_E01 ((GPIO_PIN)0x00040002) #define GPIO_E02
((GPIO_PIN)0x00040004) #define GPIO_E03 ((GPIO_PIN)0x00040008)
#define GPIO_E04 ((GPIO_PIN)0x00040010) #define GPIO_E05
((GPIO_PIN)0x00040020) #define GPIO_E06 ((GPIO_PIN)0x00040040)
#define GPIO_E07 ((GPIO_PIN)0x00040080) #define GPIO_E08
((GPIO_PIN)0x00040100) #define GPIO_E09 ((GPIO_PIN)0x00040200)
#define GPIO_E10 ((GPIO_PIN)0x00040400) #define GPIO_E11
((GPIO_PIN)0x00040800) #define GPIO_E12 ((GPIO_PIN)0x00041000)
#define GPIO_E13 ((GPIO_PIN)0x00042000) #define GPIO_E14
((GPIO_PIN)0x00044000) #define GPIO_E15 ((GPIO_PIN)0x00048000)
#define GPIO_E_ALL ((GPIO_PIN)0x0004FFFF) #define GPIO_F00
((GPIO_PIN)0x00050001) #define GPIO_F01 ((GPIO_PIN)0x00050002)
#define GPIO_F02 ((GPIO_PIN)0x00050004) #define GPIO_F03
((GPIO_PIN)0x00050008) #define GPIO_F04 ((GPIO_PIN)0x00050010)
#define GPIO_F05 ((GPIO_PIN)0x00050020) #define GPIO_F06
((GPIO_PIN)0x00050040) #define GPIO_F07 ((GPIO_PIN)0x00050080)
#define GPIO_F08 ((GPIO_PIN)0x00050100) #define GPIO_F09
((GPIO_PIN)0x00050200) #define GPIO_F10 ((GPIO_PIN)0x00050400)
#define GPIO_F11 ((GPIO_PIN)0x00050800) #define GPIO_F12
((GPIO_PIN)0x00051000) #define GPIO_F13 ((GPIO_PIN)0x00052000)
#define GPIO_F14 ((GPIO_PIN)0x00054000) #define GPIO_F15
((GPIO_PIN)0x00058000) #define GPIO_F_ALL ((GPIO_PIN)0x0005FFFF)
#define GPIO_G00 ((GPIO_PIN)0x00060001) #define GPIO_G01
((GPIO_PIN)0x00060002) #define GPIO_G02 ((GPIO_PIN)0x00060004)
#define GPIO_G03 ((GPIO_PIN)0x00060008) #define GPIO_G04
((GPIO_PIN)0x00060010) #define GPIO_G05 ((GPIO_PIN)0x00060020)
#define GPIO_G06 ((GPIO_PIN)0x00060040) #define GPIO_G07
((GPIO_PIN)0x00060080) #define GPIO_G08 ((GPIO_PIN)0x00060100)
#define GPIO_G09 ((GPIO_PIN)0x00060200) #define GPIO_G10
((GPIO_PIN)0x00060400) #define GPIO_G11 ((GPIO_PIN)0x00060800)
#define GPIO_G12 ((GPIO_PIN)0x00061000) #define GPIO_G13
((GPIO_PIN)0x00062000) #define GPIO_G14 ((GPIO_PIN)0x00064000)
#define GPIO_G15 ((GPIO_PIN)0x00068000) #define GPIO_G_ALL
((GPIO_PIN)0x0006FFFF)
//——————————————————–
//Description: // Convert the input pin to GPIO_TypeDef value.
//Parameters: // pin : [in] The input GPIO pin value
//——————————————————–
GPIO_TypeDef* PinToPort(GPIO_PIN pin);
//——————————————————–
//Description: // Convert the input pin to stm32f10x port bit value.
//Parameters: // pin : [in] The input GPIO pin value
//——————————————————– uint16_t
PinToBit(GPIO_PIN pin);
//——————————————————–
//Description: // To check the input GPIO_PIN is valid or not
//Parameters: // pin : [in] The input GPIO pin value
//——————————————————– BOOL
IsValidPin(GPIO_PIN pin);

玖.摘取“添加生成的项“
图片 9

 

10.选择“添加Adapter“
图片 10

     实现文件GPIO_Adapter.cpp:

11.选择SQL Adapter
图片 11

#include “GPIO_Adapter.h” GPIO_TypeDef* PinToPort(GPIO_PIN pin) {
switch((pin >> 16) & 0xFF) { case 00: return GPIOA; case 01:
return GPIOB; case 02: return GPIOC; case 03: return GPIOD; case 04:
return GPIOE; case 05: return GPIOF; case 06: return GPIOG; default:
return NULL; } } uint16_t PinToBit(GPIO_PIN pin) { return
static_cast<uint16_t>(pin & 0xFFFF); } BOOL IsValidPin(GPIO_PIN
pin) { if(IS_GPIO_ALL_PERIPH(PinToPort(pin)) != FALSE &&
IS_GPIO_PIN(PinToBit(pin)) != FALSE) { return TRUE; } else { return
FALSE; } }

1二.配备数据库新闻
图片 12

 

壹三.安插数据库连接
图片 13

    五.为了测试这几个GPIO,大家还必要对Native萨姆ple.proj实行设置。

1肆.输入namespace,选用收取
图片 14

 

一伍.由于尚未开创存款和储蓄进度,就选取Select语句
图片 15

    原语句:
<ItemGroup>
<DriverLibs Include=”cpu_gpio_stubs.$(LIB_EXT)” />
<RequiredProjects
Include=”$(SPOCLIENT)/DeviceCode/Drivers/stubs/processor/stubs_GPIO/dotNetMF.proj”
/>
  </ItemGroup>

1陆.输入Sql语句,注意SQL语句的写法。要加上For xml auto
图片 16

 

壹7.实现布局
图片 17

    更改为:
<ItemGroup>
    <DriverLibs Include=”GPIO_HAL_STM32F103ZE_RedCow.$(LIB_EXT)”
/>
<RequiredProjects
Include=”$(SPOCLIENT)/Solutions/STM32F103ZE_RedCow/DeviceCode/GPIO_HAL/dotNetMF.proj”
/>
</ItemGroup>

1八.中间的处理进程
图片 18

 

1玖.成功后,会在BTS项目中开创多少个公文
图片 19

    在</Project>以前扩张如下语句:
  <ItemGroup>  
   <IncludePaths
Include=”Solutions/STM32F103ZE_RedCow/DeviceCode/GPIO_HAL” />
  </ItemGroup>
 

20.改动文件名称
图片 20

    
六.万事俱备,只欠东风。大家今后要做的,正是修改Native萨姆ple.cpp代码,让程序跑起来的时候,LED壹不停地闪烁,而LED2头有在USE卡宴1按钮按下时,才会发光。具体的代码如下:

二1.到此处能够看到BTS已经为大家树立好了走访SQL Server端口类型
图片 21

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) Microsoft Corporation. All rights reserved.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <tinyhal.h> #include <Tests.h> #include
“nativesample.h” #include “GPIO_Adapter.h” //–//
HAL_DECLARE_NULL_HEAP(); void ApplicationEntryPoint() {
//不要删除上边那个讲话,不然会编写翻译出错 UA帕杰罗T usartTest ( COMTestPort,
9600, USART_PARITY_NONE, 8, USART_STOP_BITS_ONE, USART_FLOW_NONE
); //Initialize the GPIO CPU_GPIO_Initialize(); //Enable the GPIO
output pin CPU_GPIO_EnableOutputPin(GPIO_F06,TRUE);
CPU_GPIO_EnableOutputPin(GPIO_F07,TRUE);
CPU_GPIO_EnableInputPin(GPIO_A08,FALSE,NULL,GPIO_INT_NONE,RESISTOR_DISABLED);
while(TRUE) { for(long i=0;i<1000000;i++);
CPU_GPIO_SetPinState(GPIO_F06,!CPU_GPIO_GetPinState(GPIO_F06));
CPU_GPIO_SetPinState(GPIO_F07,CPU_GPIO_GetPinState(GPIO_A08)); } }

22.向业务流程中添加三个端口,弹出端口配置属性
图片 22

 

二叁.摘取端口类型
图片 23

24.端口绑定配置
图片 24

二五.布署完的机能
图片 25

二6.添加收取Shape,并与吸收接纳端口建立连接
图片 26

二柒.再次创下设二个Sql
Adapter的出殡和埋葬端口,配置格局与地点基本相同。在此地选拔发送短口
图片 27

2八.那里会有部分不相同,采取Updategram
图片 28

2玖.本人的指标是将接受到的新闻保存到数据库中,所以选取了插入
图片 29

30.一模一样BTS会再创设了八个文件
图片 30

3一.改动那四个文件名
图片 31

3二.输入端口名称
图片 32

33.取舍现有端口类型;选取新变化的这一个端口类型
图片 33

34.布署端口方向
图片 34

35.端接收端口与接收器成立连接
图片 35

3陆.笔者将那么些业务流程做成二个子流程.添加输入参数。
图片 36

三七.改动新闻参数名称
图片 37

3捌.为了将输入参数转换到发送的音讯,那里添加了转移Shape
图片 38

3玖.配置源指标
图片 39

40.铺排指标
图片 40

四一.在炫耀中国建工业总会公司立映射
图片 41

4二.开立二个乘法运算
图片 42

肆三.安插后的效益
图片 43

4四.改动那些业务流程的项目名,假诺不改动,前边会发觉与第五个odx重名
图片 44

四伍.添加接收Shape并创造连接
图片 45

四陆.在MyBTS.odx中,激活里面包车型地铁收受Shape
图片 46

47.生成项目,应该未有啥样错误
图片 47

4八.在MyBTS.odx中添加3个调用流程Shape
图片 48

4玖.创办1个强名
图片 49

50.为项目添加强名引用
图片 50

5一.从那里开首,就能够陈设项目了
图片 51

52.打开BizTalk Explore
图片 52

五三.在接受端口采用丰裕接收端口
图片 53

5四.在吸收端口选择丰盛接收端口
图片 54

55.单向端口
图片 55

5陆.进入端口属性配置对话框
图片 56

57.在接受地方上摘取充分接收地方
图片 57

58.打开传输属性对话框
图片 58

5玖.选项我们刚创建的品类以及架构
图片 59

60.配备完的功效
图片 60

陆一.安排完后的职能
图片 61

6二.添加发送端口
图片 62

陆三.选项静态须要响应端口
图片 63

6四.打开对话框
图片 64

六伍.输入响应根元素名称
图片 65

  1. 图片 66

陆柒.配置后的意义
图片 67

68.配备其它性质
图片 68

6九.对业务流程实行绑定
图片 69

70.输入端口
图片 70

71.出口端口
图片 71

72.由于MySQLAdapter.Orchestration_二是子流程,所以先运行
图片 72

73.然后运行主流程
图片 73

7四.起步后的效果
图片 74

7伍.发端测试,大家在My_Input_TB中添加一条记下
图片 75

7陆.因而1些年华后,就足以看看输出的结果已经保存到My_Output_TB中了。
图片 76

 


 

总结:

因此本次学习,确实学会了何等运用SQL Adapter来开发1些业务流程。

怀有作用没有开始展览一行代码的编排。

理解了SQL Adapter的概念。

经验:使用sql
adapter接收数据时,最佳写三个储存过程,当读取一条记下后,就及时将它删掉。小编的例证中BTS始终于读自个儿输入的那条记下。对实时性供给较高的选用,能够减小访问数据库的时日(在第伍0步)。

尤其感激 张文隽 [微软] 在技术上的竭力帮忙。

 转发请表明出处

西煞魄工厂—– 西煞魄工人(CSharp Worker)
2004-09-22 23:30 完成

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图