Advertisement
Guest User

Untitled

a guest
Jun 28th, 2016
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.60 KB | None | 0 0
  1. function icall(block)
  2. setup(block);
  3. function setup(block)
  4. block.NumInputPorts = 0;
  5. block.NumOutputPorts = 4;
  6. block.OutputPort(1).SamplingMode = 'sample';
  7. %% Setup functional port to default
  8. block.SetPreCompPortInfoToDefaults;
  9. %% Setup output port
  10.  
  11.  
  12.  
  13. block.SampleTimes = [0 1];
  14.  
  15.  
  16. block.SimStateCompliance = 'DefaultSimState';
  17.  
  18. block.RegBlockMethod('Start', @Start);
  19. block.RegBlockMethod('Outputs', @Outputs); % Required
  20. block.RegBlockMethod('Update', @Update);
  21. block.RegBlockMethod('Terminate', @Terminate); % Required
  22. block.RegBlockMethod('SetInputPortSamplingMode', @SetInpPortFrameData);
  23. block.RegBlockMethod('PostPropagationSetup', @DoPostPropSetup);
  24. function DoPostPropSetup(block)
  25. % Setup Dwork
  26. block.NumDworks = 4;
  27. block.Dwork(1).Name = 'Nothing';
  28. block.Dwork(1).Dimensions = 1;
  29. block.Dwork(1).DatatypeID = 0;
  30. block.Dwork(1).Complexity = 'Real';
  31. block.Dwork(1).UsedAsDiscState = false;
  32. block.Dwork(2).Name = 'Nothing1';
  33. block.Dwork(2).Dimensions = 1;
  34. block.Dwork(2).DatatypeID = 0;
  35. block.Dwork(2).Complexity = 'Real';
  36. block.Dwork(2).UsedAsDiscState = false;
  37. block.Dwork(3).Name = 'Nothing2';
  38. block.Dwork(3).Dimensions = 1;
  39. block.Dwork(3).DatatypeID = 0;
  40. block.Dwork(3).Complexity = 'Real';
  41. block.Dwork(3).UsedAsDiscState = false;
  42. block.Dwork(4).Name = 'Nothing3';
  43. block.Dwork(4).Dimensions = 1;
  44. block.Dwork(4).DatatypeID = 0;
  45. block.Dwork(4).Complexity = 'Real';
  46. block.Dwork(4).UsedAsDiscState = false;
  47.  
  48. %endfunction
  49.  
  50. %endfunction
  51.  
  52. function Start(block)
  53.  
  54.  
  55. fullpathToDll = 'Z:Farha2015_02_26_photometer_DatenloggerPC-SoftwareCGMultChan.dll';
  56. fullpathToHeader = 'Z:Farha2015_02_26_photometer_DatenloggerPC-SoftwareCGMultChan.h';
  57. fullpathToHeader;
  58. fullpathToDll;
  59. loadlibrary(fullpathToDll, fullpathToHeader);
  60. libfunctions ('CGMultChan');
  61. delete(instrfindall);
  62. serialPort = 'COM1';
  63. IP = calllib('CGMultChan','CGMultChan_Connect','192.168.100.158');%Connect to Data Loger
  64. if (IP == 0)
  65. end
  66. out = instrfind('Port','COM1');
  67. %Open Serial COM Port
  68. s = serial(serialPort);
  69. set(s,'BaudRate',57600,'DataBits', 8, 'Parity', 'none','StopBits', 1, 'FlowControl', 'none','Terminator','CR');
  70. set(s,'Timeout',20);
  71. fopen(s);
  72. TI_ms = calllib('CGMultChan','CGMultChan_SetIntTime',.02*100);
  73. tic
  74.  
  75.  
  76. block.Dwork(1).Data = 1;
  77. block.Dwork(2).Data = 2;
  78. block.Dwork(3).Data = 3;
  79. block.Dwork(4).Data = 5;
  80.  
  81. function Outputs(block)
  82.  
  83. block.OutputPort(1).Data = block.Dwork(1).Data; %+ %block.InputPort(1).Data;
  84. block.OutputPort(2).Data = block.Dwork(2).Data;
  85. block.OutputPort(3).Data = block.Dwork(3).Data;
  86. block.OutputPort(4).Data = block.Dwork(4).Data;
  87.  
  88. count=0;
  89. function Update(block)
  90. nsamples=20
  91. count=0
  92. while (count < nsamples )
  93.  
  94. BufferSize=16;
  95. pBuffer = libpointer('singlePtr',zeros(BufferSize,1));
  96. data2 = calllib('CGMultChan','CGMultChan_MeasureAll',pBuffer);%Measurement
  97. output = pBuffer.Value
  98.  
  99. count = count + 1;
  100. time(count) = toc; %Extract Elapsed Time
  101. dataright(count) = output(1)
  102. dataup(count)=output(2)
  103. databack(count)=output(3)
  104. datafront(count)=output(5)
  105. end
  106. dataright(1:20) = output(1:20);
  107. dataup(1:20)= output(1:20);
  108. databack(1:20)=output(1:20);
  109. datafront(1:20)=output(1:20);
  110. block.Dwork(1).Data = double(dataright(1));
  111. block.Dwork(2).Data = double(dataup(2));
  112. block.Dwork(3).Data = double(databack(3));
  113. block.Dwork(4).Data = double(datafront(5));
  114.  
  115. %end Update
  116. function SetInpPortFrameData(block,idx,fd)
  117. block.InputPort(idx).SamplingMode=fd;
  118. for i=1:block.NumOutputPorts
  119. block.OutputPort(i).SamplingMode=fd;
  120. end
  121. %%
  122. function Terminate(block)
  123. serialPort = 'COM1';
  124. s = serial(serialPort);
  125.  
  126. fclose(s);
  127. clear pBuffer;
  128. calllib('CGMultChan','CGMultChan_Disconnect');%Disconnect from Data Logger
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement