There was a problem with your SQL connection - Please contact the administrator
Prototype
SetPinDir (pinId, dir)
Description
Set the direction of a pin.
Return
Nothing
Code Example
The following code example uses the SetPinDir function.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | /* Example Code * GetPinDir/SetPinDir * * get pinId, val * get valInit * * return valInit and * if useParams * new dir of PIN * else * 0x01 (new dir == val) or 0x00 (new dir != val) * on 16 bits * * example VMExecuteCmd: * cmd: |pinId |val * 0xfb 0x0e 0x00 0x0c 0x00 0x0e [0x?? 0x?? 0x?? = macAdress] 0x00 0x00 0x01 * rsp: 0xfb 0x0a 0x00 0x2d 0x00 0xe1 0x1e 0x01 */ #include "SMK900.evi" #define SENSORCODE 0x01 function exec_aircmd(){ local rxLen; local useParams; local pinId, valTmp, val; local i; local result; rxLen=GetAirBuf(0, 0, 20); if (rxLen>=4){ // 1 byte for paketID + 3 bytes of payload (3 bytes for param) useParams= true ; pinId=GetBuffer_16(1); val=(GetBuffer_U8(3)&0x01); } else { useParams= false ; pinId=_PA0; val=0; } valTmp=GetPinDir(pinId); SetPinDir(pinId,val); Delay(100); SetBuffer(0,valTmp,1); valTmp=GetPinDir(pinId); if (useParams){ SetBuffer(1,valTmp,1); } else { if (valTmp==val){ result=1; } else { result=0; } SetBuffer(1,result,1); } Send(2); } function main() { local execType; execType = GetExecType(); if (execType==MESHEXECTYPE_AIRCMD_bm){ exec_aircmd(); } } |