├── README.md ├── REST example ├── README.md ├── client.py ├── client.sh └── server.js ├── RTK ├── NTRIP connection strings.txt ├── README.md ├── mission_planner_NTRIP_setup.png └── mission_planner_connection.png ├── arduino_opta └── relay_toggle.ino ├── cpp_threads ├── CMakeLists.txt └── serial_polling.cpp ├── cv_demo ├── CMakeLists.txt ├── cv_capture_example.cpp └── cv_color_detector.cpp ├── documentation ├── Requirements Gathering Worksheet.xlsx ├── architectural design specification latex │ ├── architectural_design_specification.pdf │ ├── architectural_design_specification.tex │ ├── images │ │ ├── data_flow.png │ │ ├── layers.png │ │ ├── subsystem.png │ │ └── test_image.jpg │ ├── reference │ │ ├── IEEEtran.bst │ │ ├── IEEEtran_custom.bst │ │ └── refs.bib │ └── tex │ │ ├── data_flow.tex │ │ ├── introduction.tex │ │ ├── system_overview.tex │ │ ├── x_layer_subsystems.tex │ │ ├── y_layer_subsystems.tex │ │ └── z_layer_subsystems.tex ├── detailed design specification latex │ ├── detailed_design_specification.pdf │ ├── detailed_design_specification.tex │ ├── images │ │ ├── data_flow.png │ │ ├── layers.png │ │ ├── subsystem.png │ │ └── test_image.jpg │ ├── reference │ │ ├── IEEEtran.bst │ │ ├── IEEEtran_custom.bst │ │ └── refs.bib │ └── tex │ │ ├── appendix_a.tex │ │ ├── data_flow.tex │ │ ├── introduction.tex │ │ ├── system_overview.tex │ │ ├── x_layer_subsystems.tex │ │ ├── y_layer_subsystems.tex │ │ └── z_layer_subsystems.tex ├── individual sprint report LaTeX.zip ├── individual sprint report LaTeX │ ├── burndown.png │ ├── example.pdf │ └── sprint report.tex ├── project charter latex │ ├── images │ │ └── test_image.jpg │ ├── project_charter.tex │ ├── project_charter_latex.pdf │ ├── reference │ │ ├── IEEEtran.bst │ │ ├── IEEEtran_custom.bst │ │ └── refs.bib │ └── tex │ │ ├── assumptions.tex │ │ ├── background.tex │ │ ├── constraints.tex │ │ ├── cost_proposal.tex │ │ ├── documentation_reporting.tex │ │ ├── facilities_equipment.tex │ │ ├── methodology.tex │ │ ├── milestones.tex │ │ ├── problem.tex │ │ ├── related_work.tex │ │ ├── risks.tex │ │ ├── roles_responsibilities.tex │ │ ├── system_overview.tex │ │ └── value_proposition.tex ├── sprint presentations │ ├── Sprint Plan Template.pptx │ ├── Sprint Review Template.pptx │ └── burndown chart template.xls ├── system requirements specification LaTeX.zip ├── system requirements specification LaTeX │ └── tex │ │ └── security_requirements.tex ├── system requirements specification latex │ ├── images │ │ └── test_image.jpg │ ├── reference │ │ ├── IEEEtran.bst │ │ ├── IEEEtran_custom.bst │ │ └── refs.bib │ ├── system_requirements_specification.pdf │ ├── system_requirements_specification.tex │ └── tex │ │ ├── customer_requirements.tex │ │ ├── future_items.tex │ │ ├── maintenance_support_requirements.tex │ │ ├── other_requirements.tex │ │ ├── packaging_requirements.tex │ │ ├── performance_requirements.tex │ │ ├── product_concept.tex │ │ ├── product_description.tex │ │ └── safety_requirements.tex └── test plan │ ├── STP Guide.doc │ └── ieee829mtp.pdf ├── drones ├── 3D print │ ├── Here3 straddle mount.stl │ ├── S550 CubeOrange vibration mount - BOTTOM.stl │ └── S550 CubeOrange vibration mount - TOP.stl └── README.md ├── esp8266 └── access_point_http_server │ └── access_point_http_server.ino ├── lab storage card ├── README.md ├── storage reservation card.docx └── storage reservation card.pdf ├── mitsubishi PLC └── SimpleLibrarySlmpFx5 │ ├── .vs │ └── SimpleLibrarySlmpFx5 │ │ ├── FileContentIndex │ │ ├── 37879a3a-372a-420f-a687-849b2a63f15d.vsidx │ │ ├── 8a4abcec-d0b3-4d25-8a0d-2267f4e71647.vsidx │ │ └── read.lock │ │ └── v17 │ │ └── .suo │ ├── SimpleLibrarySlmpFx5.sln │ ├── SimpleLibrarySlmpFx5.v12.suo │ └── SimpleLibrarySlmpFx5 │ ├── App.config │ ├── Program.cs │ ├── Properties │ └── AssemblyInfo.cs │ ├── SimpleLibrarySlmpFx5.csproj │ ├── bin │ ├── Debug │ │ ├── SLMP_EDC_LIB.dll │ │ ├── SimpleLibSlmpFx5.dll │ │ ├── SimpleLibSlmpFx5.pdb │ │ ├── SimpleLibrarySlmpFx5.exe │ │ ├── SimpleLibrarySlmpFx5.exe.config │ │ ├── SimpleLibrarySlmpFx5.pdb │ │ ├── SimpleLibrarySlmpFx5.vshost.exe │ │ ├── SimpleLibrarySlmpFx5.vshost.exe.config │ │ └── SimpleLibrarySlmpFx5.vshost.exe.manifest │ └── Release │ │ ├── SLMP_EDC_LIB.dll │ │ ├── SimpleLibSlmpFx5.dll │ │ ├── SimpleLibSlmpFx5.pdb │ │ ├── SimpleLibrarySlmpFx5.exe │ │ ├── SimpleLibrarySlmpFx5.exe.config │ │ ├── SimpleLibrarySlmpFx5.pdb │ │ ├── SimpleLibrarySlmpFx5.vshost.exe │ │ ├── SimpleLibrarySlmpFx5.vshost.exe.config │ │ └── SimpleLibrarySlmpFx5.vshost.exe.manifest │ └── obj │ ├── Debug │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ ├── SimpleLibrarySlmpFx5.csproj.FileListAbsolute.txt │ ├── SimpleLibrarySlmpFx5.csprojResolveAssemblyReference.cache │ ├── SimpleLibrarySlmpFx5.exe │ ├── SimpleLibrarySlmpFx5.pdb │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ └── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs │ └── Release │ ├── .NETFramework,Version=v4.8.AssemblyAttributes.cs │ ├── DesignTimeResolveAssemblyReferencesInput.cache │ ├── SimpleLibrarySlmpFx5.csproj.AssemblyReference.cache │ ├── SimpleLibrarySlmpFx5.csproj.CoreCompileInputs.cache │ ├── SimpleLibrarySlmpFx5.csproj.FileListAbsolute.txt │ ├── SimpleLibrarySlmpFx5.csproj.SuggestedBindingRedirects.cache │ ├── SimpleLibrarySlmpFx5.csprojResolveAssemblyReference.cache │ ├── SimpleLibrarySlmpFx5.exe │ ├── SimpleLibrarySlmpFx5.pdb │ ├── TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs │ ├── TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs │ └── TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs ├── nodejs ├── child_process.js ├── hello.js ├── requestImage │ ├── TEST_URL.txt │ ├── server.js │ └── user │ │ └── 1234 │ │ └── album │ │ └── test.jpg └── server.js ├── openlayers ├── index.html ├── main.js ├── map.geojson └── styles.css ├── pcb └── BLE demo │ ├── RN4020_BLE.brd │ └── RN4020_BLE.sch ├── pcl_demo ├── CMakeLists.txt ├── CloudVisualizer.cpp ├── CloudVisualizer.h ├── load_pcd.cpp └── openni2_snapper.cpp ├── pupil_tracker ├── CMakeLists.txt ├── PupilTracker.cpp ├── PupilTracker.h ├── pupil_demo.cpp └── pupil_test.mp4 ├── raspi_notes ├── openCV 2.4.10 raspbian install.txt └── v4l2 raspicam install.txt ├── scikit-learn ├── MLPClassifier_deploy.py ├── MLPClassifier_train.py └── README.md ├── sparkfun artemis ├── BLE_stepper │ ├── BLE_example.h │ ├── BLE_example_funcs.cpp │ ├── BLE_stepper.ino │ ├── nus_api.h │ └── nus_main.c └── ULN2003 │ └── ULN2003.ino ├── teensy_demo ├── demo applications │ ├── teensy_accelstepper_demo │ │ ├── Form1.Designer.cs │ │ ├── Form1.cs │ │ ├── Form1.resx │ │ ├── Program.cs │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ │ └── teensy_accelstepper_demo.csproj │ ├── teensy_demo.sln │ ├── teensy_demo.suo │ ├── teensy_demo.v12.suo │ ├── teensy_hbridge_demo │ │ ├── Form1.Designer.cs │ │ ├── Form1.cs │ │ ├── Form1.resx │ │ ├── Program.cs │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ │ └── teensy_hbridge_demo.csproj │ ├── teensy_serial_demo │ │ ├── Form1.Designer.cs │ │ ├── Form1.cs │ │ ├── Form1.resx │ │ ├── Program.cs │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ │ └── teensy_serial_demo.csproj │ ├── teensy_servo_demo │ │ ├── Form1.Designer.cs │ │ ├── Form1.cs │ │ ├── Form1.resx │ │ ├── Program.cs │ │ ├── Properties │ │ │ ├── AssemblyInfo.cs │ │ │ ├── Resources.Designer.cs │ │ │ ├── Resources.resx │ │ │ ├── Settings.Designer.cs │ │ │ └── Settings.settings │ │ └── teensy_servo_demo.csproj │ └── teensy_stepper_demo │ │ ├── Form1.Designer.cs │ │ ├── Form1.cs │ │ ├── Form1.resx │ │ ├── Program.cs │ │ ├── Properties │ │ ├── AssemblyInfo.cs │ │ ├── Resources.Designer.cs │ │ ├── Resources.resx │ │ ├── Settings.Designer.cs │ │ └── Settings.settings │ │ ├── obj │ │ └── x86 │ │ │ └── Release │ │ │ └── DesignTimeResolveAssemblyReferencesInput.cache │ │ └── teensy_stepper_demo.csproj └── firmware │ ├── iHSS57 │ └── iHSS57.ino │ ├── serial_accelstepper_control │ └── serial_accelstepper_control.ino │ ├── serial_communication_variable │ └── serial_communication_variable.ino │ ├── serial_hbridge_control │ └── serial_hbridge_control.ino │ ├── serial_servo_control │ └── serial_servo_control.ino │ └── serial_stepper_control │ └── serial_stepper_control.ino └── zmq demo ├── CMakeLists.txt ├── zmq_cv_request.cpp └── zmq_cv_server.cpp /README.md: -------------------------------------------------------------------------------- 1 | CSE 4316: Senior Design 2 | ======== 3 | 4 | Repository containing files related to CSE senior design 5 | -------------------------------------------------------------------------------- /REST example/README.md: -------------------------------------------------------------------------------- 1 | REST example 2 | ======== 3 | 4 | Example of simple RESTful server API written using the express Node.js framework. 5 | 6 | Simple test clients in python and pure bash scripting using cURL are provided. 7 | 8 | ### REST server example (Node.js) 9 | 10 | install dependencies 11 | ``` 12 | sudo apt-get install nodejs npm 13 | npm install express 14 | ``` 15 | Run the server 16 | ``` 17 | node server.js 18 | ``` 19 | 20 | ### Client example (python) 21 | Run the python client 22 | ``` 23 | python3 client.py 24 | ``` 25 | ### Client example (bash) 26 | Run the bash client 27 | ``` 28 | sh client.sh 29 | ``` 30 | -------------------------------------------------------------------------------- /REST example/client.py: -------------------------------------------------------------------------------- 1 | import requests 2 | 3 | # test HTTP GET method 4 | response = requests.get('http://localhost:3000/') 5 | print("response status code: " + str(response.status_code)) 6 | print("response body: " + response.text) 7 | 8 | # test HTTP PUT method 9 | response = requests.put('http://localhost:3000/', data={"param": "value"}) 10 | print("response status code: " + str(response.status_code)) 11 | print("response body: " + response.text) 12 | 13 | # test HTTP POST method 14 | response = requests.post('http://localhost:3000/', data={"param": "value"}) 15 | print("response status code: " + str(response.status_code)) 16 | print("response body: " + response.text) 17 | 18 | # test HTTP GET method with JSON endpoint 19 | response = requests.get('http://localhost:3000/json') 20 | json_response = response.json() 21 | print("response status code: " + str(response.status_code)) 22 | print("response body: " + str(json_response)) 23 | 24 | # test HTTP POST method with JSON endpoint 25 | postJSON={'key':'value'} 26 | response = requests.post('http://localhost:3000/json', json=postJSON) 27 | print("response status code: " + str(response.status_code)) 28 | print("response body: " + response.text) 29 | 30 | # test HTTP POST method with INVALID JSON data 31 | # this should return an error message, as the JSON data is improperly formatted 32 | response = requests.post('http://localhost:3000/json', json="invalid JSON data") 33 | print("response status code: " + str(response.status_code)) 34 | print("response body: " + response.text) 35 | -------------------------------------------------------------------------------- /REST example/client.sh: -------------------------------------------------------------------------------- 1 | # send HTTP GET request to endpoint "/" 2 | curl -X GET http://127.0.0.1:3000/ -i 3 | 4 | # send HTTP PUT request to endpoint "/" 5 | curl -d "param1=value1¶m2=value2" -X PUT http://localhost:3000/ -i 6 | 7 | # send HTTP POST request to endpoint "/" 8 | curl -d "param1=value1¶m2=value2" -X POST http://localhost:3000/ -i 9 | 10 | # POST JSON data to the /json endpoint 11 | curl -d '"key1":"value1", "key2":"value2' -H "Content-Type: application/json}" -X POST http://localhost:3000/json -i 12 | 13 | # GET JSON data from the /json endpoint 14 | curl -X GET http://localhost:3000/json -i 15 | -------------------------------------------------------------------------------- /REST example/server.js: -------------------------------------------------------------------------------- 1 | const express = require('express') 2 | const app = express() 3 | const port = 3000 4 | 5 | app.use(express.json()) // for parsing application/json 6 | app.use(express.urlencoded({ extended: true })) // for parsing application/x-www-form-urlencoded 7 | 8 | // define the default error handler 9 | app.use (function (error, request, response, next){ 10 | console.error("WARNING: error detected...") 11 | console.error(error.stack) 12 | response.status(500).send("Error handling request: " + error.message) 13 | }); 14 | 15 | // handler for a receved HTTP GET request 16 | app.get('/', (request, response) => { 17 | console.log('request body:', request.body); 18 | return response.send('Received a GET HTTP request'); 19 | }); 20 | 21 | // handler for a receved HTTP POST request 22 | app.post('/', (request, response) => { 23 | console.log('request body:', request.body); 24 | return response.send('Received a POST HTTP request'); 25 | }); 26 | 27 | // handler for a receved HTTP POST request at endpoint /json 28 | app.post('/json', (request, response) => { 29 | console.log('request body:', request.body); 30 | // echo back the received JSON data 31 | response.json(request.body) 32 | }); 33 | 34 | // handler for a receved HTTP GET request at endpoint /json 35 | app.get('/json', (request, response) => { 36 | console.log('request body:', request.body); 37 | // create a JSON message to send 38 | data = {timestamp: Date.now(), message: "Hello world!" } 39 | response.json(data) 40 | }); 41 | 42 | // handler for a receved HTTP PUT request 43 | app.put('/', (request, response) => { 44 | console.log('request body:', request.body) 45 | return response.send('Received a PUT HTTP request'); 46 | }); 47 | 48 | // handler for a receved HTTP DELETE request 49 | app.delete('/', (request, response) => { 50 | console.log('request body:', request.body) 51 | return response.send('Received a DELETE HTTP request'); 52 | }); 53 | 54 | // handler for application start 55 | app.listen(port, () => 56 | console.log("Example app listening on port " + port) 57 | ); 58 | 59 | -------------------------------------------------------------------------------- /RTK/NTRIP connection strings.txt: -------------------------------------------------------------------------------- 1 | Connecting to RTK2GO from mission planner... 2 | 3 | DEPRECATED - will not work after November 2022 4 | http://rtk2go.com:2101/ARLINGTON-76017 5 | http://rtk2go.com:2101/ARLINGTON_76010 6 | 7 | PROPER FORMAT: user:password@host:port/mountport 8 | user - a valid email address 9 | password - the string "none" 10 | host - rtk2go.com 11 | port - 2101 12 | mountpoint - name of the NTRIP caster you with to connect to 13 | 14 | WORKING EXAMPLES: 15 | http://email@domain.com:none@rtk2go.com:2101/ARLINGTON-76017 16 | http://email@domain.com:none@rtk2go.com:2101/ARLINGTON_76010 17 | 18 | TO CHECK BASE STATION STATUS: 19 | http://rtk2go.com:2101/SNIP::MOUNTPT?baseName=ARLINGTON-76017 20 | http://rtk2go.com:2101/SNIP::MOUNTPT?baseName=ARLINGTON_76010 21 | 22 | TO VIEW OTHER RTK2GO ACTIVE STREAMS: 23 | http://new.rtk2go.com:2101/SNIP::STATUS 24 | -------------------------------------------------------------------------------- /RTK/README.md: -------------------------------------------------------------------------------- 1 | # Connecting to the UTA RTK base station in Mission Planner 2 | 3 | The UTA RTK base station broadcasts RTCM correction data using RTK2GO.com. An NTRIP client can connect to the base station using the appropriate connection string, which generally includes username, password, port, and endpoint fields. For NTRIP connections in Mission Planner using RTK2GO.com, the connection strings have the following format: 4 | 5 | ## NTRIP connection format 6 | user:password@host:port/mountport 7 | 8 | ## NTRIP connection fields 9 | user - a valid email address (your email address) 10 | 11 | password - the string "none" 12 | 13 | host - rtk2go.com 14 | 15 | port - 2101 16 | 17 | mountpoint - name of the NTRIP caster you with to connect to 18 | 19 | 20 | In the case of the UTA RTK base station mounted on the roof of Nedderman Hall, the mountpoint is "ARLINGTON_76010". Thus, the proper connection string is: 21 | 22 | ## UTA Mission Planner NTRIP connection string 23 | http://email@domain.com:none@rtk2go.com:2101/ARLINGTON_76010 24 | 25 | ## To enter the NTRIP connection information 26 | 27 | navigate to SETUP > Optional Hardware > RTK/GPS Inject 28 | 29 | ![Mission Planner NTRIP setup](https://github.com/cmcmurrough/cse4316/blob/master/RTK/mission_planner_NTRIP_setup.png?raw=true) 30 | 31 | Select "NTRIP" and click "Connect". Enter the connection string in the popup after replacing the email address with your own. 32 | 33 | ![Mission Planner connection](https://github.com/cmcmurrough/cse4316/blob/master/RTK/mission_planner_connection.png?raw=true) 34 | 35 | After clicking "OK", the client should connect and show link status information as packets are received. 36 | 37 | # Checking base station status 38 | Real-time status information of the UTA base stations can be checked from a browser: 39 | 40 | http://rtk2go.com:2101/SNIP::MOUNTPT?baseName=ARLINGTON_76010 41 | 42 | # View other active streams on RTK2GO 43 | A list of all active RTK2GO base stations can be found here: 44 | 45 | http://new.rtk2go.com:2101/SNIP::STATUS 46 | -------------------------------------------------------------------------------- /RTK/mission_planner_NTRIP_setup.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/RTK/mission_planner_NTRIP_setup.png -------------------------------------------------------------------------------- /RTK/mission_planner_connection.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/RTK/mission_planner_connection.png -------------------------------------------------------------------------------- /arduino_opta/relay_toggle.ino: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright 2024 Christopher D. McMurrough 3 | // 4 | // This program is free software: you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation, either version 3 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program. If not, see . 16 | // 17 | 18 | int buttonState = 0; 19 | int counter = 0; 20 | 21 | /*********************************************************************************************************************** 22 | * @BRIEF perform initial setup of the microcontroller 23 | * @AUTHOR Christoper D. McMurrough 24 | **********************************************************************************************************************/ 25 | void setup() 26 | { 27 | // initialize LEDs 28 | pinMode(LED_USER, OUTPUT); 29 | pinMode(LED_D0, OUTPUT); 30 | pinMode(LED_D1, OUTPUT); 31 | pinMode(LED_D2, OUTPUT); 32 | pinMode(LED_D3, OUTPUT); 33 | 34 | // initialize relays 35 | pinMode(D0, OUTPUT); 36 | pinMode(D1, OUTPUT); 37 | pinMode(D2, OUTPUT); 38 | pinMode(D3, OUTPUT); 39 | 40 | // initialize button 41 | pinMode(BTN_USER, INPUT); 42 | } 43 | 44 | /*********************************************************************************************************************** 45 | * @BRIEF main program loop 46 | * @AUTHOR Christoper D. McMurrough 47 | **********************************************************************************************************************/ 48 | void loop() 49 | { 50 | digitalWrite(LED_USER, HIGH); 51 | buttonState = digitalRead(BTN_USER); 52 | if(buttonState == LOW) 53 | { 54 | if(counter < 4) 55 | { 56 | counter++; 57 | } 58 | else 59 | { 60 | counter = 0; 61 | } 62 | delay(100); 63 | } 64 | toggleRelays(); 65 | } 66 | 67 | /*********************************************************************************************************************** 68 | * @BRIEF toggle LEDs and relays 69 | * @AUTHOR Christoper D. McMurrough 70 | **********************************************************************************************************************/ 71 | void toggleRelays() 72 | { 73 | switch(counter) 74 | { 75 | case 0: 76 | digitalWrite(LED_D0, LOW); 77 | digitalWrite(LED_D1, LOW); 78 | digitalWrite(LED_D2, LOW); 79 | digitalWrite(LED_D3, LOW); 80 | digitalWrite(D0, LOW); 81 | digitalWrite(D1, LOW); 82 | digitalWrite(D2, LOW); 83 | digitalWrite(D3, LOW); 84 | break; 85 | case 1: 86 | digitalWrite(LED_D0, HIGH); 87 | digitalWrite(LED_D1, LOW); 88 | digitalWrite(LED_D2, LOW); 89 | digitalWrite(LED_D3, LOW); 90 | digitalWrite(D0, HIGH); 91 | digitalWrite(D1, LOW); 92 | digitalWrite(D2, LOW); 93 | digitalWrite(D3, LOW); 94 | break; 95 | case 2: 96 | digitalWrite(LED_D0, LOW); 97 | digitalWrite(LED_D1, HIGH); 98 | digitalWrite(LED_D2, LOW); 99 | digitalWrite(LED_D3, LOW); 100 | digitalWrite(D0, LOW); 101 | digitalWrite(D1, HIGH); 102 | digitalWrite(D2, LOW); 103 | digitalWrite(D3, LOW); 104 | break; 105 | case 3: 106 | digitalWrite(LED_D0, LOW); 107 | digitalWrite(LED_D1, LOW); 108 | digitalWrite(LED_D2, HIGH); 109 | digitalWrite(LED_D3, LOW); 110 | digitalWrite(D0, LOW); 111 | digitalWrite(D1, LOW); 112 | digitalWrite(D2, HIGH); 113 | digitalWrite(D3, LOW); 114 | break; 115 | case 4: 116 | digitalWrite(LED_D0, LOW); 117 | digitalWrite(LED_D1, LOW); 118 | digitalWrite(LED_D2, LOW); 119 | digitalWrite(LED_D3, HIGH); 120 | digitalWrite(D0, LOW); 121 | digitalWrite(D1, LOW); 122 | digitalWrite(D2, LOW); 123 | digitalWrite(D3, HIGH); 124 | break; 125 | } 126 | delay(100); 127 | } 128 | -------------------------------------------------------------------------------- /cpp_threads/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | project (threads) 2 | cmake_minimum_required(VERSION 3.1) 3 | 4 | # explicitly set c++11 5 | set(CMAKE_CXX_STANDARD 11) 6 | 7 | # find thread packages 8 | find_package(Threads) 9 | 10 | # find boost 11 | find_package(Boost 1.55.0 REQUIRED system thread) 12 | include_directories(${Boost_INCLUDE_DIR}) 13 | link_directories(${Boost_LIBRARY_DIRS}) 14 | IF(WIN32) 15 | set(Boost_USE_STATIC_LIBS OFF) 16 | set(Boost_USE_MULTITHREADED ON) 17 | set(Boost_USE_STATIC_RUNTIME OFF) 18 | set(BOOST_ALL_DYN_LINK ON) 19 | ENDIF(WIN32) 20 | 21 | # create individual projects 22 | add_executable(serial_polling serial_polling.cpp) 23 | target_link_libraries(serial_polling ${Boost_LIBRARIES}) 24 | 25 | 26 | -------------------------------------------------------------------------------- /cv_demo/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | project (cv_capture_example) 2 | cmake_minimum_required(VERSION 2.8) 3 | 4 | # configure OpenCV 5 | IF(WIN32) 6 | # set the opencv directories manually 7 | message("Windows platform detected, setting OpenCV configuration manually...") 8 | set(OPENCV_ROOT_DIR "C:/OpenCV") 9 | set(OPENCV_BUILD_DIR ${OPENCV_ROOT_DIR}/build/x64/vc12) 10 | set(OPENCV_INCLUDE_DIRS ${OPENCV_ROOT_DIR}/build/include; ${OPENCV_ROOT_DIR}/build/include/opencv; ${OPENCV_ROOT_DIR}/build/include/opencv2) 11 | set(OPENCV_LIB_DIRS ${OPENCV_BUILD_DIR}/lib) 12 | 13 | # set the include and link directories 14 | include_directories(${OPENCV_INCLUDE_DIRS}) 15 | link_directories(${OPENCV_LIB_DIRS}) 16 | 17 | # find all of the libs in OPENCV_LIB_DIRS 18 | file(GLOB OpenCV_LIBS RELATIVE ${OPENCV_LIB_DIRS} ${OPENCV_LIB_DIRS}/*.lib) 19 | message("Found OpenCV libs...") 20 | message(${OpenCV_LIBS}) 21 | ELSE(WIN32) 22 | # workaround for -lopencv_dep_cudart linker error when using CUDA 23 | # NOTE: if linker error above occurs, run cmake again with existing cache before build 24 | set(CUDA_USE_STATIC_CUDA_RUNTIME OFF) 25 | 26 | set(OpenCV_DIR "/usr/local/share/OpenCV") 27 | find_package(OpenCV REQUIRED) 28 | ENDIF(WIN32) 29 | 30 | # create create individual projects 31 | add_executable (cv_capture_example cv_capture_example.cpp) 32 | target_link_libraries(cv_capture_example ${OpenCV_LIBS}) 33 | 34 | add_executable (cv_color_detector cv_color_detector.cpp) 35 | target_link_libraries(cv_color_detector ${OpenCV_LIBS}) 36 | -------------------------------------------------------------------------------- /documentation/Requirements Gathering Worksheet.xlsx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/Requirements Gathering Worksheet.xlsx -------------------------------------------------------------------------------- /documentation/architectural design specification latex/architectural_design_specification.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/architectural design specification latex/architectural_design_specification.pdf -------------------------------------------------------------------------------- /documentation/architectural design specification latex/architectural_design_specification.tex: -------------------------------------------------------------------------------- 1 | %%% LaTeX Template: Article/Thesis/etc. with colored headings and special fonts 2 | %%% 3 | %%% Source: http://www.howtotex.com/ 4 | %%% Feel free to distribute this template, but please keep to referal to http://www.howtotex.com/ here. 5 | %%% February 2011 6 | %%% 7 | %%% Modified January 2016 by CDM 8 | 9 | %%% Preamble 10 | \documentclass[11pt,letterpaper]{article} 11 | \usepackage[margin=1.0in]{geometry} 12 | \usepackage[T1]{fontenc} 13 | \usepackage[bitstream-charter]{mathdesign} 14 | \usepackage[latin1]{inputenc} 15 | \usepackage{amsmath} 16 | \usepackage{xcolor} 17 | \usepackage{cite} 18 | \usepackage{hyphenat} 19 | \usepackage{graphicx} 20 | \usepackage{float} 21 | \usepackage{subfigure} 22 | \usepackage{sectsty} 23 | \usepackage[compact]{titlesec} 24 | \usepackage[tablegrid]{vhistory} 25 | \usepackage{pbox} 26 | \allsectionsfont{\color{accentcolor}\scshape\selectfont} 27 | 28 | %%% Definitions 29 | \definecolor{accentcolor}{rgb}{0.0,0.0,0.5} 30 | \newcommand{\teamname}{Team Name} 31 | \newcommand{\productname}{Product Name} 32 | \newcommand{\coursename}{CSE 4316: Senior Design I} 33 | \newcommand{\semester}{Fall 2015} 34 | \newcommand{\docname}{Architectural Design Specification} 35 | \newcommand{\department}{Department of Computer Science \& Engineering} 36 | \newcommand{\university}{The University of Texas at Arlington} 37 | \newcommand{\authors}{Alan Turing \\ Grace Hopper \\ John Von Neumann \\ Ada Lovelace \\ Charles Babbage} 38 | 39 | %%% Headers and footers 40 | \usepackage{fancyhdr} 41 | \pagestyle{fancy} % Enabling the custom headers/footers 42 | \usepackage{lastpage} 43 | % Header (empty) 44 | \lhead{} 45 | \chead{} 46 | \rhead{} 47 | % Footer 48 | \lfoot{\footnotesize \teamname \ - \semester} 49 | \cfoot{} 50 | \rfoot{\footnotesize page \thepage\ of \pageref{LastPage}} % "Page 1 of 2" 51 | \renewcommand{\headrulewidth}{0.0pt} 52 | \renewcommand{\footrulewidth}{0.4pt} 53 | 54 | %%% Change the abstract environment 55 | \usepackage[runin]{abstract} % runin option for a run-in title 56 | %\setlength\absleftindent{30pt} % left margin 57 | %\setlength\absrightindent{30pt} % right margin 58 | \abslabeldelim{\quad} 59 | \setlength{\abstitleskip}{-10pt} 60 | \renewcommand{\abstractname}{} 61 | \renewcommand{\abstracttextfont}{\color{accentcolor} \small \slshape} % slanted text 62 | 63 | %%% Start of the document 64 | \begin{document} 65 | 66 | %%% Cover sheet 67 | {\centering \huge \color{accentcolor} \sc \textbf{\department \\ \university} \par} 68 | \vspace{1 in} 69 | {\centering \huge \color{accentcolor} \sc \textbf{\docname \\ \coursename \\ \semester} \par} 70 | \vspace{0.5 in} 71 | \begin{figure}[h!] 72 | \centering 73 | \includegraphics[width=0.60\textwidth]{images/test_image} 74 | \end{figure} 75 | \vspace{0.5 in} 76 | {\centering \huge \color{accentcolor} \sc \textbf{\teamname \\ \productname} \par} 77 | \vspace{0.5 in} 78 | {\centering \large \sc \textbf{\authors} \par} 79 | \newpage 80 | 81 | 82 | %\vspace{1 in} 83 | %\centerline{January 13th, 2012} 84 | %\newpage 85 | 86 | %%% Revision History 87 | \begin{versionhistory} 88 | \vhEntry{0.1}{10.01.2015}{GH}{document creation} 89 | \vhEntry{0.2}{10.05.2015}{AT|GH}{complete draft} 90 | \vhEntry{0.3}{10.12.2015}{AT|GH}{release candidate 1} 91 | \vhEntry{1.0}{10.20.2015}{AT|GH|CB}{official release} 92 | \vhEntry{1.1}{10.31.2015}{AL}{added design review requests} 93 | \end{versionhistory} 94 | \newpage 95 | 96 | %%% Table of contents 97 | \setcounter{tocdepth}{2} 98 | \tableofcontents 99 | \newpage 100 | 101 | %%% List of figures and tables (optional) 102 | \listoffigures 103 | \listoftables 104 | \newpage 105 | 106 | %%% Document sections 107 | \section{Introduction} 108 | \input{tex/introduction.tex} 109 | \newpage 110 | \section{System Overview} 111 | \input{tex/system_overview.tex} 112 | \newpage 113 | \section{Subsystem Definitions \& Data Flow} 114 | \input{tex/data_flow.tex} 115 | \newpage 116 | \section{X Layer Subsystems} 117 | \input{tex/x_layer_subsystems.tex} 118 | \newpage 119 | \section{Y Layer Subsystems} 120 | \input{tex/y_layer_subsystems.tex} 121 | \newpage 122 | \section{Z Layer Subsystems} 123 | \input{tex/z_layer_subsystems.tex} 124 | \newpage 125 | 126 | %%% References 127 | \bibliographystyle{plain} 128 | \bibliographystyle{reference/IEEEtran_custom} 129 | \bibliography{reference/refs}{} 130 | 131 | \end{document} -------------------------------------------------------------------------------- /documentation/architectural design specification latex/images/data_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/architectural design specification latex/images/data_flow.png -------------------------------------------------------------------------------- /documentation/architectural design specification latex/images/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/architectural design specification latex/images/layers.png -------------------------------------------------------------------------------- /documentation/architectural design specification latex/images/subsystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/architectural design specification latex/images/subsystem.png -------------------------------------------------------------------------------- /documentation/architectural design specification latex/images/test_image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/architectural design specification latex/images/test_image.jpg -------------------------------------------------------------------------------- /documentation/architectural design specification latex/reference/refs.bib: -------------------------------------------------------------------------------- 1 | @book{Rubin2012, 2 | author = {Rubin, Kenneth S}, 3 | edition = {1st}, 4 | isbn = {0137043295, 9780137043293}, 5 | publisher = {Addison-Wesley Professional}, 6 | title = {{Essential Scrum: A Practical Guide to the Most Popular Agile Process}}, 7 | year = {2012} 8 | } 9 | 10 | -------------------------------------------------------------------------------- /documentation/architectural design specification latex/tex/data_flow.tex: -------------------------------------------------------------------------------- 1 | This section breaks down your layer abstraction to another level of detail. Here you grapically represent the logical subsytems that compose each layer and show the interactions/interfaces between those subsystems. A subsystem can be thought of as a programming unit that implements one of the major functions of the layer. It, therefore, has data elements that serve as source/sinks for other subsystems. The logical data elements that flow between subsystems need to be explicitly defined at this point, beginning with a data flow-like diagram based on the block diagram. 2 | 3 | \begin{figure}[h!] 4 | \centering 5 | \includegraphics[width=\textwidth]{images/data_flow} 6 | \caption{A simple data flow diagram} 7 | \end{figure} 8 | -------------------------------------------------------------------------------- /documentation/architectural design specification latex/tex/introduction.tex: -------------------------------------------------------------------------------- 1 | Your introduction should describe your product concept in sufficient detail that the architectural design will be easy to follow. The introduction may include information used in the first sections of your SRS for this purpose. At a minimum, ensure that the product concept, scope and key requirements are described. -------------------------------------------------------------------------------- /documentation/architectural design specification latex/tex/system_overview.tex: -------------------------------------------------------------------------------- 1 | This section should describe the overall structure of your software system. Think of it as the strategy for how you will build the system. An architectural "layer" is the top-level logical view, or an abstraction, of your design. Layers should be composed of related elements of similar capabilities, and should be highly independent of other layers, but should have very clearly defined interfaces and interactions with other layers. Each layer should be identified individually and should be unique as to its function and purpose within the system. This section should also contain the high-level block diagram of the layers, as shown in the example below, as well as detailed descriptions of the functions of each layer. 2 | 3 | \begin{figure}[h!] 4 | \centering 5 | \includegraphics[width=0.60\textwidth]{images/layers} 6 | \caption{A simple architectural layer diagram} 7 | \end{figure} 8 | 9 | \subsection{Layer X Description} 10 | Each layer should be described separately in detail. Descriptions should include the features, functions, critical interfaces and interactions of the layer. The description should clearly define the services that the layer provides. Also include any conventions that your team will use in describing the structure: naming conventions for layers, subsystems, modules, and data flows; interface specifications; how layers and subsystems are defined; etc. 11 | 12 | \subsection{Layer Y Description} 13 | Each layer should be described separately in detail. Descriptions should include the features, functions, critical interfaces and interactions of the layer. The description should clearly define the services that the layer provides. Also include any conventions that your team will use in describing the structure: naming conventions for layers, subsystems, modules, and data flows; interface specifications; how layers and subsystems are defined; etc. 14 | 15 | \subsection{Layer Z Description} 16 | Each layer should be described separately in detail. Descriptions should include the features, functions, critical interfaces and interactions of the layer. The description should clearly define the services that the layer provides. Also include any conventions that your team will use in describing the structure: naming conventions for layers, subsystems, modules, and data flows; interface specifications; how layers and subsystems are defined; etc. -------------------------------------------------------------------------------- /documentation/architectural design specification latex/tex/x_layer_subsystems.tex: -------------------------------------------------------------------------------- 1 | In this section, the layer is described in some detail in terms of its specific subsystems. Describe each of the layers and its subsystems in a separate chapter/major subsection of this document. The content of each subsystem description should be similar. Include in this section any special considerations and/or trade-offs considered for the approach you have chosen. 2 | 3 | \subsection{Subsystem 1} 4 | This section should be a general description of a particular subsystem for the given layer. For most subsystems, an extract of the architectural block diagram with data flows is useful. This should consist of the subsystem being described and those subsystems with which it communicates. 5 | 6 | \begin{figure}[h!] 7 | \centering 8 | \includegraphics[width=0.60\textwidth]{images/subsystem} 9 | \caption{Example subsystem description diagram} 10 | \end{figure} 11 | 12 | \subsubsection{Assumptions} 13 | Any assumptions made in the definition of the subsystem should be listed and described. Pay particular attention to assumptions concerning interfaces and interactions with other layers. 14 | 15 | \subsubsection{Responsibilities} 16 | Each of the responsibilities/features/functions/services of the subsystem as identified in the architectural summary must be expanded to more detailed responsibilities. These responsibilities form the basis for the identification of the finer-grained responsibilities of the layer's internal subsystems. Clearly describe what each subsystem does. 17 | 18 | \subsubsection{Subsystem Interfaces} 19 | Each of the inputs and outputs for the subsystem are defined here. Create a table with an entry for each labelled interface that connects to this subsystem. For each entry, describe any incoming and outgoing data elements will pass through this interface. 20 | 21 | \begin {table}[H] 22 | \caption {Subsystem interfaces} 23 | \begin{center} 24 | \begin{tabular}{ | p{1cm} | p{6cm} | p{3cm} | p{3cm} |} 25 | \hline 26 | ID & Description & Inputs & Outputs \\ \hline 27 | \#xx & Description of the interface/bus & \pbox{3cm}{input 1 \\ input 2} & \pbox{3cm}{output 1} \\ \hline 28 | \#xx & Description of the interface/bus & \pbox{3cm}{N/A} & \pbox{3cm}{output 1} \\ \hline 29 | \end{tabular} 30 | \end{center} 31 | \end{table} 32 | 33 | \subsection{Subsystem 2} 34 | Repeat for each subsystem 35 | 36 | \subsection{Subsystem 3} 37 | Repeat for each subsystem 38 | 39 | -------------------------------------------------------------------------------- /documentation/architectural design specification latex/tex/y_layer_subsystems.tex: -------------------------------------------------------------------------------- 1 | In this section, the layer is described in some detail in terms of its specific subsystems. Describe each of the layers and its subsystems in a separate chapter/major subsection of this document. The content of each subsystem description should be similar. Include in this section any special considerations and/or trade-offs considered for the approach you have chosen. 2 | 3 | \subsection{Subsystem 1} 4 | This section should be a general description of a particular subsystem for the given layer. For most subsystems, an extract of the architectural block diagram with data flows is useful. This should consist of the subsystem being described and those subsystems with which it communicates. 5 | 6 | \begin{figure}[h!] 7 | \centering 8 | \includegraphics[width=0.60\textwidth]{images/subsystem} 9 | \caption{Example subsystem description diagram} 10 | \end{figure} 11 | 12 | \subsubsection{Assumptions} 13 | Any assumptions made in the definition of the subsystem should be listed and described. Pay particular attention to assumptions concerning interfaces and interactions with other layers. 14 | 15 | \subsubsection{Responsibilities} 16 | Each of the responsibilities/features/functions/services of the subsystem as identified in the architectural summary must be expanded to more detailed responsibilities. These responsibilities form the basis for the identification of the finer-grained responsibilities of the layer's internal subsystems. Clearly describe what each subsystem does. 17 | 18 | \subsubsection{Subsystem Interfaces} 19 | Each of the inputs and outputs for the subsystem are defined here. Create a table with an entry for each labelled interface that connects to this subsystem. For each entry, describe any incoming and outgoing data elements will pass through this interface. 20 | 21 | \begin {table}[H] 22 | \caption {Subsystem interfaces} 23 | \begin{center} 24 | \begin{tabular}{ | p{1cm} | p{6cm} | p{3cm} | p{3cm} |} 25 | \hline 26 | ID & Description & Inputs & Outputs \\ \hline 27 | \#xx & Description of the interface/bus & \pbox{3cm}{input 1 \\ input 2} & \pbox{3cm}{output 1} \\ \hline 28 | \#xx & Description of the interface/bus & \pbox{3cm}{N/A} & \pbox{3cm}{output 1} \\ \hline 29 | \end{tabular} 30 | \end{center} 31 | \end{table} 32 | 33 | \subsection{Subsystem 2} 34 | Repeat for each subsystem 35 | 36 | \subsection{Subsystem 3} 37 | Repeat for each subsystem 38 | 39 | -------------------------------------------------------------------------------- /documentation/architectural design specification latex/tex/z_layer_subsystems.tex: -------------------------------------------------------------------------------- 1 | In this section, the layer is described in some detail in terms of its specific subsystems. Describe each of the layers and its subsystems in a separate chapter/major subsection of this document. The content of each subsystem description should be similar. Include in this section any special considerations and/or trade-offs considered for the approach you have chosen. 2 | 3 | \subsection{Subsystem 1} 4 | This section should be a general description of a particular subsystem for the given layer. For most subsystems, an extract of the architectural block diagram with data flows is useful. This should consist of the subsystem being described and those subsystems with which it communicates. 5 | 6 | \begin{figure}[h!] 7 | \centering 8 | \includegraphics[width=0.60\textwidth]{images/subsystem} 9 | \caption{Example subsystem description diagram} 10 | \end{figure} 11 | 12 | \subsubsection{Assumptions} 13 | Any assumptions made in the definition of the subsystem should be listed and described. Pay particular attention to assumptions concerning interfaces and interactions with other layers. 14 | 15 | \subsubsection{Responsibilities} 16 | Each of the responsibilities/features/functions/services of the subsystem as identified in the architectural summary must be expanded to more detailed responsibilities. These responsibilities form the basis for the identification of the finer-grained responsibilities of the layer's internal subsystems. Clearly describe what each subsystem does. 17 | 18 | \subsubsection{Subsystem Interfaces} 19 | Each of the inputs and outputs for the subsystem are defined here. Create a table with an entry for each labelled interface that connects to this subsystem. For each entry, describe any incoming and outgoing data elements will pass through this interface. 20 | 21 | \begin {table}[H] 22 | \caption {Subsystem interfaces} 23 | \begin{center} 24 | \begin{tabular}{ | p{1cm} | p{6cm} | p{3cm} | p{3cm} |} 25 | \hline 26 | ID & Description & Inputs & Outputs \\ \hline 27 | \#xx & Description of the interface/bus & \pbox{3cm}{input 1 \\ input 2} & \pbox{3cm}{output 1} \\ \hline 28 | \#xx & Description of the interface/bus & \pbox{3cm}{N/A} & \pbox{3cm}{output 1} \\ \hline 29 | \end{tabular} 30 | \end{center} 31 | \end{table} 32 | 33 | \subsection{Subsystem 2} 34 | Repeat for each subsystem 35 | 36 | \subsection{Subsystem 3} 37 | Repeat for each subsystem 38 | 39 | -------------------------------------------------------------------------------- /documentation/detailed design specification latex/detailed_design_specification.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/detailed design specification latex/detailed_design_specification.pdf -------------------------------------------------------------------------------- /documentation/detailed design specification latex/detailed_design_specification.tex: -------------------------------------------------------------------------------- 1 | %%% LaTeX Template: Article/Thesis/etc. with colored headings and special fonts 2 | %%% 3 | %%% Source: http://www.howtotex.com/ 4 | %%% Feel free to distribute this template, but please keep to referal to http://www.howtotex.com/ here. 5 | %%% February 2011 6 | %%% 7 | %%% Modified January 2016 by CDM 8 | 9 | %%% Preamble 10 | \documentclass[11pt,letterpaper]{article} 11 | \usepackage[margin=1.0in]{geometry} 12 | \usepackage[T1]{fontenc} 13 | \usepackage[bitstream-charter]{mathdesign} 14 | \usepackage[latin1]{inputenc} 15 | \usepackage{amsmath} 16 | \usepackage{xcolor} 17 | \usepackage{cite} 18 | \usepackage{hyphenat} 19 | \usepackage{graphicx} 20 | \usepackage{float} 21 | \usepackage{subfigure} 22 | \usepackage{sectsty} 23 | \usepackage[compact]{titlesec} 24 | \usepackage[tablegrid]{vhistory} 25 | \usepackage{pbox} 26 | \allsectionsfont{\color{accentcolor}\scshape\selectfont} 27 | 28 | %%% Definitions 29 | \definecolor{accentcolor}{rgb}{0.0,0.0,0.5} 30 | \newcommand{\teamname}{Team Name} 31 | \newcommand{\productname}{Product Name} 32 | \newcommand{\coursename}{CSE 4317: Senior Design II} 33 | \newcommand{\semester}{Spring 2016} 34 | \newcommand{\docname}{Detailed Design Specification} 35 | \newcommand{\department}{Department of Computer Science \& Engineering} 36 | \newcommand{\university}{The University of Texas at Arlington} 37 | \newcommand{\authors}{Alan Turing \\ Grace Hopper \\ John Von Neumann \\ Ada Lovelace \\ Charles Babbage} 38 | 39 | %%% Headers and footers 40 | \usepackage{fancyhdr} 41 | \pagestyle{fancy} % Enabling the custom headers/footers 42 | \usepackage{lastpage} 43 | % Header (empty) 44 | \lhead{} 45 | \chead{} 46 | \rhead{} 47 | % Footer 48 | \lfoot{\footnotesize \teamname \ - \semester} 49 | \cfoot{} 50 | \rfoot{\footnotesize page \thepage\ of \pageref{LastPage}} % "Page 1 of 2" 51 | \renewcommand{\headrulewidth}{0.0pt} 52 | \renewcommand{\footrulewidth}{0.4pt} 53 | 54 | %%% Change the abstract environment 55 | \usepackage[runin]{abstract} % runin option for a run-in title 56 | %\setlength\absleftindent{30pt} % left margin 57 | %\setlength\absrightindent{30pt} % right margin 58 | \abslabeldelim{\quad} 59 | \setlength{\abstitleskip}{-10pt} 60 | \renewcommand{\abstractname}{} 61 | \renewcommand{\abstracttextfont}{\color{accentcolor} \small \slshape} % slanted text 62 | 63 | %%% Start of the document 64 | \begin{document} 65 | 66 | %%% Cover sheet 67 | {\centering \huge \color{accentcolor} \sc \textbf{\department \\ \university} \par} 68 | \vspace{1 in} 69 | {\centering \huge \color{accentcolor} \sc \textbf{\docname \\ \coursename \\ \semester} \par} 70 | \vspace{0.5 in} 71 | \begin{figure}[h!] 72 | \centering 73 | \includegraphics[width=0.60\textwidth]{images/test_image} 74 | \end{figure} 75 | \vspace{0.5 in} 76 | {\centering \huge \color{accentcolor} \sc \textbf{\teamname \\ \productname} \par} 77 | \vspace{0.5 in} 78 | {\centering \large \sc \textbf{\authors} \par} 79 | \newpage 80 | 81 | 82 | %\vspace{1 in} 83 | %\centerline{January 13th, 2012} 84 | %\newpage 85 | 86 | %%% Revision History 87 | \begin{versionhistory} 88 | \vhEntry{0.1}{1.01.2016}{GH}{document creation} 89 | \vhEntry{0.2}{1.05.2016}{AT|GH}{complete draft} 90 | \vhEntry{0.3}{1.12.2016}{AT|GH}{release candidate 1} 91 | \vhEntry{1.0}{1.20.2016}{AT|GH|CB}{official release} 92 | \vhEntry{1.1}{1.31.2016}{AL}{added design review requests} 93 | \end{versionhistory} 94 | \newpage 95 | 96 | %%% Table of contents 97 | \setcounter{tocdepth}{2} 98 | \tableofcontents 99 | \newpage 100 | 101 | %%% List of figures and tables (optional) 102 | \listoffigures 103 | \listoftables 104 | \newpage 105 | 106 | %%% Document sections 107 | \section{Introduction} 108 | \input{tex/introduction.tex} 109 | \section{System Overview} 110 | \input{tex/system_overview.tex} 111 | \newpage 112 | %\section{Subsystem Definitions \& Data Flow} 113 | %\input{tex/data_flow.tex} 114 | \newpage 115 | \section{X Layer Subsystems} 116 | \input{tex/x_layer_subsystems.tex} 117 | \newpage 118 | \section{Y Layer Subsystems} 119 | \input{tex/y_layer_subsystems.tex} 120 | \newpage 121 | \section{Z Layer Subsystems} 122 | \input{tex/z_layer_subsystems.tex} 123 | \newpage 124 | \section{Appendix A} 125 | \input{tex/appendix_a.tex} 126 | \newpage 127 | 128 | %%% References 129 | \bibliographystyle{plain} 130 | \bibliographystyle{reference/IEEEtran_custom} 131 | \bibliography{reference/refs}{} 132 | 133 | \end{document} -------------------------------------------------------------------------------- /documentation/detailed design specification latex/images/data_flow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/detailed design specification latex/images/data_flow.png -------------------------------------------------------------------------------- /documentation/detailed design specification latex/images/layers.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/detailed design specification latex/images/layers.png -------------------------------------------------------------------------------- /documentation/detailed design specification latex/images/subsystem.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/detailed design specification latex/images/subsystem.png -------------------------------------------------------------------------------- /documentation/detailed design specification latex/images/test_image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/detailed design specification latex/images/test_image.jpg -------------------------------------------------------------------------------- /documentation/detailed design specification latex/reference/refs.bib: -------------------------------------------------------------------------------- 1 | @book{Rubin2012, 2 | author = {Rubin, Kenneth S}, 3 | edition = {1st}, 4 | isbn = {0137043295, 9780137043293}, 5 | publisher = {Addison-Wesley Professional}, 6 | title = {{Essential Scrum: A Practical Guide to the Most Popular Agile Process}}, 7 | year = {2012} 8 | } 9 | 10 | -------------------------------------------------------------------------------- /documentation/detailed design specification latex/tex/appendix_a.tex: -------------------------------------------------------------------------------- 1 | Include any additional documents (CAD design, circuit schematics, etc) as an appendix as necessary. -------------------------------------------------------------------------------- /documentation/detailed design specification latex/tex/data_flow.tex: -------------------------------------------------------------------------------- 1 | This section breaks down your layer abstraction to another level of detail. Here you grapically represent the logical subsytems that compose each layer and show the interactions/interfaces between those subsystems. A subsystem can be thought of as a programming unit that implements one of the major functions of the layer. It, therefore, has data elements that serve as source/sinks for other subsystems. The logical data elements that flow between subsystems need to be explicitly defined at this point, beginning with a data flow-like diagram based on the block diagram. 2 | 3 | \begin{figure}[h!] 4 | \centering 5 | \includegraphics[width=\textwidth]{images/data_flow} 6 | \caption{A simple data flow diagram} 7 | \end{figure} 8 | -------------------------------------------------------------------------------- /documentation/detailed design specification latex/tex/introduction.tex: -------------------------------------------------------------------------------- 1 | Your introduction should provide a brief overview of the product concept and a reference to the requirement specification and architectural design documents in 1 or 2 paragraphs. The purpose is to provide the reader with the location of relevant background material that lead to the design details presented in this document. 2 | -------------------------------------------------------------------------------- /documentation/detailed design specification latex/tex/system_overview.tex: -------------------------------------------------------------------------------- 1 | This section should reintroduce the full data flow diagram from the architectural specification, and discuss at a high level the purpose of each layer. You do not need to include a subsection for each layer, a 1 - 2 paragraph recap is sufficient. 2 | 3 | \begin{figure}[h!] 4 | \centering 5 | \includegraphics[width=0.90\textwidth]{images/data_flow} 6 | \caption{System architecture} 7 | \end{figure} 8 | -------------------------------------------------------------------------------- /documentation/detailed design specification latex/tex/x_layer_subsystems.tex: -------------------------------------------------------------------------------- 1 | In this section, the layer is described in terms of the hardware and software design. Specific implementation details, such as hardware components, programming languages, software dependencies, operating systems, etc. should be discussed. Any unnecessary items can be ommitted (for example, a pure software module without any specific hardware should not include a hardware subsection). The organization, titles, and content of the sections below can be modified as necessary for the project. 2 | 3 | \subsection{Layer Hardware} 4 | A description of any involved hardware components for the layer. For example, if each subsystem is a software process running on an embedded computer, discuss the specifics of that device here. Do not list a hardware component that only exists at the subsystem level (include it in the following sections). 5 | 6 | \subsection{Layer Operating System} 7 | A description of any operating systems required by the layer. 8 | 9 | \subsection{Layer Software Dependencies} 10 | A description of any software dependencies (libraries, frameworks, etc) required by the layer. 11 | 12 | \subsection{Subsystem 1} 13 | Descibe at a high level the purpose and basic design of this subsystem. Is it a piece of hardware, a class, a web service, or something else? Note that each of the subsystem items below are meant to be specific to that subystem and not a repeat of anything discussed above for the overall layer. 14 | 15 | \begin{figure}[h!] 16 | \centering 17 | \includegraphics[width=0.60\textwidth]{images/subsystem} 18 | \caption{Example subsystem description diagram} 19 | \end{figure} 20 | 21 | \subsubsection{Subsystem Hardware} 22 | A description of any involved hardware components for the subsystem. 23 | 24 | \subsubsection{Subsystem Operating System} 25 | A description of any operating systems required by the subsystem. 26 | 27 | \subsubsection{Subsystem Software Dependencies} 28 | A description of any software dependencies (libraries, frameworks, design software for mechanical parts or circuits, etc) required by the subsystem. 29 | 30 | \subsubsection{Subsystem Programming Languages} 31 | A description of any programming languages used by the subsystem. 32 | 33 | \subsubsection{Subsystem Data Structures} 34 | A description of any classes or other data structures that are worth discussing for the subsystem. For example, data being transmitted from a microcontroller to a PC via USB should be first be assembled into packets. What is the structure of the packets? 35 | 36 | \subsubsection{Subsystem Data Processing} 37 | A description of any algorithms or processing strategies that are worth discussing for the subsystem. If you are implementing a well-known algorithm, list it. If it is something unique to this project, discuss it in greater detail. 38 | 39 | 40 | -------------------------------------------------------------------------------- /documentation/detailed design specification latex/tex/y_layer_subsystems.tex: -------------------------------------------------------------------------------- 1 | In this section, the layer is described in terms of the hardware and software design. Specific implementation details, such as hardware components, programming languages, software dependencies, operating systems, etc. should be discussed. Any unnecessary items can be ommitted (for example, a pure software module without any specific hardware should not include a hardware subsection). The organization, titles, and content of the sections below can be modified as necessary for the project. 2 | 3 | \subsection{Layer Hardware} 4 | A description of any involved hardware components for the layer. For example, if each subsystem is a software process running on an embedded computer, discuss the specifics of that device here. Do not list a hardware component that only exists at the subsystem level (include it in the following sections). 5 | 6 | \subsection{Layer Operating System} 7 | A description of any operating systems required by the layer. 8 | 9 | \subsection{Layer Software Dependencies} 10 | A description of any software dependencies (libraries, frameworks, etc) required by the layer. 11 | 12 | \subsection{Subsystem 1} 13 | Descibe at a high level the purpose and basic design of this subsystem. Is it a piece of hardware, a class, a web service, or something else? Note that each of the subsystem items below are meant to be specific to that subystem and not a repeat of anything discussed above for the overall layer. 14 | 15 | \begin{figure}[h!] 16 | \centering 17 | \includegraphics[width=0.60\textwidth]{images/subsystem} 18 | \caption{Example subsystem description diagram} 19 | \end{figure} 20 | 21 | \subsubsection{Subsystem Hardware} 22 | A description of any involved hardware components for the subsystem. 23 | 24 | \subsubsection{Subsystem Operating System} 25 | A description of any operating systems required by the subsystem. 26 | 27 | \subsubsection{Subsystem Software Dependencies} 28 | A description of any software dependencies (libraries, frameworks, design software for mechanical parts or circuits, etc) required by the subsystem. 29 | 30 | \subsubsection{Subsystem Programming Languages} 31 | A description of any programming languages used by the subsystem. 32 | 33 | \subsubsection{Subsystem Data Structures} 34 | A description of any classes or other data structures that are worth discussing for the subsystem. For example, data being transmitted from a microcontroller to a PC via USB should be first be assembled into packets. What is the structure of the packets? 35 | 36 | \subsubsection{Subsystem Data Processing} 37 | A description of any algorithms or processing strategies that are worth discussing for the subsystem. If you are implementing a well-known algorithm, list it. If it is something unique to this project, discuss it in greater detail. 38 | 39 | 40 | -------------------------------------------------------------------------------- /documentation/detailed design specification latex/tex/z_layer_subsystems.tex: -------------------------------------------------------------------------------- 1 | In this section, the layer is described in terms of the hardware and software design. Specific implementation details, such as hardware components, programming languages, software dependencies, operating systems, etc. should be discussed. Any unnecessary items can be ommitted (for example, a pure software module without any specific hardware should not include a hardware subsection). The organization, titles, and content of the sections below can be modified as necessary for the project. 2 | 3 | \subsection{Layer Hardware} 4 | A description of any involved hardware components for the layer. For example, if each subsystem is a software process running on an embedded computer, discuss the specifics of that device here. Do not list a hardware component that only exists at the subsystem level (include it in the following sections). 5 | 6 | \subsection{Layer Operating System} 7 | A description of any operating systems required by the layer. 8 | 9 | \subsection{Layer Software Dependencies} 10 | A description of any software dependencies (libraries, frameworks, etc) required by the layer. 11 | 12 | \subsection{Subsystem 1} 13 | Descibe at a high level the purpose and basic design of this subsystem. Is it a piece of hardware, a class, a web service, or something else? Note that each of the subsystem items below are meant to be specific to that subystem and not a repeat of anything discussed above for the overall layer. 14 | 15 | \begin{figure}[h!] 16 | \centering 17 | \includegraphics[width=0.60\textwidth]{images/subsystem} 18 | \caption{Example subsystem description diagram} 19 | \end{figure} 20 | 21 | \subsubsection{Subsystem Hardware} 22 | A description of any involved hardware components for the subsystem. 23 | 24 | \subsubsection{Subsystem Operating System} 25 | A description of any operating systems required by the subsystem. 26 | 27 | \subsubsection{Subsystem Software Dependencies} 28 | A description of any software dependencies (libraries, frameworks, design software for mechanical parts or circuits, etc) required by the subsystem. 29 | 30 | \subsubsection{Subsystem Programming Languages} 31 | A description of any programming languages used by the subsystem. 32 | 33 | \subsubsection{Subsystem Data Structures} 34 | A description of any classes or other data structures that are worth discussing for the subsystem. For example, data being transmitted from a microcontroller to a PC via USB should be first be assembled into packets. What is the structure of the packets? 35 | 36 | \subsubsection{Subsystem Data Processing} 37 | A description of any algorithms or processing strategies that are worth discussing for the subsystem. If you are implementing a well-known algorithm, list it. If it is something unique to this project, discuss it in greater detail. 38 | 39 | 40 | -------------------------------------------------------------------------------- /documentation/individual sprint report LaTeX.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/individual sprint report LaTeX.zip -------------------------------------------------------------------------------- /documentation/individual sprint report LaTeX/burndown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/individual sprint report LaTeX/burndown.png -------------------------------------------------------------------------------- /documentation/individual sprint report LaTeX/example.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/individual sprint report LaTeX/example.pdf -------------------------------------------------------------------------------- /documentation/project charter latex/images/test_image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/project charter latex/images/test_image.jpg -------------------------------------------------------------------------------- /documentation/project charter latex/project_charter_latex.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/project charter latex/project_charter_latex.pdf -------------------------------------------------------------------------------- /documentation/project charter latex/reference/refs.bib: -------------------------------------------------------------------------------- 1 | @misc{Lant2010, 2 | author = {Lant, Michael}, 3 | booktitle = {Software Development, Agile Methods and the Intersection of People Process and Technology}, 4 | title = {{How To Make Your Project Not Suck by Using an Agile Project Charter}}, 5 | url = {http://michaellant.com/2010/05/18/how-to-make-your-project-not-suck/}, 6 | year = {2010} 7 | } 8 | @book{Rubin2012, 9 | author = {Rubin, Kenneth S}, 10 | edition = {1st}, 11 | isbn = {0137043295, 9780137043293}, 12 | publisher = {Addison-Wesley Professional}, 13 | title = {{Essential Scrum: A Practical Guide to the Most Popular Agile Process}}, 14 | year = {2012} 15 | } 16 | @techreport{, 17 | institution = {U.S. Department of Defense}, 18 | pages = {2--7}, 19 | title = {{DOD Sample Phase I Proposal}}, 20 | url = {http://www.acq.osd.mil/osbp/sbir/sb/resources/sample-proposals.shtml}, 21 | year = {2011} 22 | } 23 | -------------------------------------------------------------------------------- /documentation/project charter latex/tex/assumptions.tex: -------------------------------------------------------------------------------- 1 | An assumption is a belief of what you assume to be true in the future. You make assumptions based on your knowledge, experience or the information available on hand. These are anticipated events or circumstances that are expected to occur during your project's life cycle. 2 | 3 | Assumptions are supposed to be true but do not necessarily end up being true. Sometimes they may turn out to be false, which can affect your project significantly. They add risks to the project because they may or may not be true. For example, if you are working on an outdoor unmanned vehicle, are you assuming that testing space will be available when needed? Are you relying on an external team or contractor to provide a certain subsystem on time? If you are working at a customer facility or deploying on their computing infrastructure, are you assuming you will be granted physical access or network credentials? 4 | 5 | This section should contain a list of at least 5 of the most critical assumptions related to your project. For example: 6 | 7 | The following list contains critical assumptions related to the implementation and testing of the project. 8 | 9 | \begin{itemize} 10 | \item A suitable outdoor testing location will be available by the 3rd sprint cycle 11 | \item The X sensing system developed by Sensor Consulting Company will be delivered according to specifications by the 4th sprint cycle 12 | \item Access to the customer installation site will be provided by the 5th sprint cycle 13 | \item The customer will provide ample power and network connectivity at the installation site 14 | \item The installation site network infrastructure will allow TCP network traffic on port 8080 15 | \end{itemize} -------------------------------------------------------------------------------- /documentation/project charter latex/tex/background.tex: -------------------------------------------------------------------------------- 1 | An in-depth explanation of the problem, including the "business case". What is wrong with the status-quo or what opportunity exists that justifies undertaking this project (expanding upon the problem statement)? If you have a clear customer or sponsor, why do they want you to work on this? What is the existing relationship, if any, between the development team and the customer? This section should occupy 1/2 - 1 full page. -------------------------------------------------------------------------------- /documentation/project charter latex/tex/constraints.tex: -------------------------------------------------------------------------------- 1 | Constraints are limitations imposed on the project, such as the limitation of cost, schedule, or resources, and you have to work within the boundaries restricted by these constraints. All projects have constraints, which are defined and identified at the beginning of the project. 2 | 3 | Constraints are outside of your control. They are imposed upon you by your client, organization, government regulations, availability of resources, etc. Occasionally, identified constraints turn out to be false. This is often beneficial to the development team, since it removes items that could potentially affect progress. 4 | 5 | This section should contain a list of at least 5 of the most critical constraints related to your project. For example: 6 | 7 | The following list contains key constraints related to the implementation and testing of the project. 8 | 9 | \begin{itemize} 10 | \item Final prototype demonstration must be completed by May 1st, 20XX 11 | \item The customer will provide no more than two maintenance personnel to assist in on-site installation 12 | \item Customer installation site will only be accessible by development team during normal business hours 13 | \item Total development costs must not exceed \$800 14 | \item All data obtained from customer site must be reviewed and approved for release by the Information Security Office prior to being copied to any internet connected storage medium 15 | \end{itemize} 16 | -------------------------------------------------------------------------------- /documentation/project charter latex/tex/cost_proposal.tex: -------------------------------------------------------------------------------- 1 | This section contains the approximate budget for the project, where that money will come from, and any other support. This text should be replaced with a discussion and justification of major expenses, but not the actual monetary amounts (that will go in the preliminary budget section below). 2 | 3 | \subsection{Preliminary Budget} 4 | Include a high level budget table for components, fabrication, software licensees, development hardware, etc. This should be in a tabular format broken up into appropriate line items. 5 | 6 | \subsection{Current \& Pending Support} 7 | What are all of the funding sources for the project, and are there any potential funding sources that haven't been secured yet? List all funding sources (including the default funding amount provided by the CSE department) and their dollar amounts. -------------------------------------------------------------------------------- /documentation/project charter latex/tex/facilities_equipment.tex: -------------------------------------------------------------------------------- 1 | What lab space, testing grounds, makerspaces, etc. will you need to complete the project? Will you require any specific equipment, and if so, where will you get it (borrow, lease, purchase, outsource, already present in the lab, etc.). This section should occupy 1/2 page. -------------------------------------------------------------------------------- /documentation/project charter latex/tex/methodology.tex: -------------------------------------------------------------------------------- 1 | This is the "What" of the project and it states what will be done to address the problem statement. This section should focus mostly on what your solution is going to be and what it is going to do (i.e., we are going to build an app, robot, device, etc. to perform some task which mitigates the problem). If someone were to ask you \textit{"What are you doing for your senior design project?"}, this is section is basically what you would tell them. -------------------------------------------------------------------------------- /documentation/project charter latex/tex/milestones.tex: -------------------------------------------------------------------------------- 1 | This list of core project milestones should include all major documents, demonstration of major project features, and associated deadlines. Any date that has not yet been officially scheduled at the time of preparing this document may be listed by month. 2 | \\ 3 | \\ 4 | Provide a list of milestones and completion dates in the following format: 5 | \begin{itemize} 6 | \item Project Charter first draft - Month Year 7 | \item System Requirements Specification - Month Year 8 | \item Architectural Design Specification - Month Year 9 | \item Demonstration of - Month Year 10 | \item Detailed Design Specification - Month Year 11 | \item Demonstration of - Month Year 12 | \item Demonstration of - Month Year 13 | \item CoE Innovation Day poster presentation - Month Year 14 | \item Demonstration of - Month Year 15 | \item Demonstration of - Month Year 16 | \item Demonstration of - Month Year 17 | \item Final Project Demonstration - Month Year 18 | \end{itemize} -------------------------------------------------------------------------------- /documentation/project charter latex/tex/problem.tex: -------------------------------------------------------------------------------- 1 | The problem statement defines the "Why" of the project. This is the higher purpose, or the reason for the project's existence. This section should avoid mentioning implementation details, and focus more on what the current problem is and what would be gained if the problem were to be solved. In short, the is the reason that you are going to be working on something, not the method(s) that you will be employing. -------------------------------------------------------------------------------- /documentation/project charter latex/tex/related_work.tex: -------------------------------------------------------------------------------- 1 | Discuss the state-of-the-art with respect to your product. What solutions currently exist, and in what form (academic research, enthusiast prototype, commercially available, etc.)? Include references and citations as necessary using the \textit{cite} command, like this \cite{Rubin2012}. If there are existing solutions, why won't they work for your customer (too expensive, not fast enough, not reliable enough, etc.). This section should occupy 1/2 - 1 full page, and should include at least 5 references to related work. All references should be added to the \textit{.bib} file, fully documented in IEEE format, and should appear in the \textit{references} section at the end of this document (the IEEE citation style will automatically be applied if your reference is properly added to the \textit{.bib} file). 2 | 3 | ProTip: Consider using a citation manager such as Mendeley, Zotero, or EndNote to generate your \textit{.bib} file and maintain documentation references throughout the life cycle of the project. -------------------------------------------------------------------------------- /documentation/project charter latex/tex/risks.tex: -------------------------------------------------------------------------------- 1 | This section should contain a list of at least 5 of the most critical risks related to your project. Additionally, the probability of occurrence, size of loss, and risk exposure should be listed. For size of loss, express units as the number of days by which the project schedule would be delayed. For risk exposure, multiply the size of loss by the probability of occurrence to obtain the exposure in days. For example: 2 | 3 | The following high-level risk census contains identified project risks with the highest exposure. Mitigation strategies will be discussed in future planning sessions. 4 | 5 | \begin{table}[h] 6 | \resizebox{\textwidth}{!}{ 7 | \begin{tabular}{|l|l|l|l|} 8 | \hline 9 | \textbf{Risk description} & \textbf{Probability} & \textbf{Loss (days)} & \textbf{Exposure (days)} \\ \hline 10 | Availability of X sensor module due to contractor delay & 0.50 & 20 & 10 \\ \hline 11 | Outdoor testing grounds are not available & 0.20 & 14 & 2.8 \\ \hline 12 | Internet access not available at installation site & 0.30 & 9 & 2.7 \\ \hline 13 | Delays in shipping from overseas vendors & 0.10 & 20 & 2.0 \\ \hline 14 | Certification delays at compliance testing facility & 0.15 & 10 & 1.5 \\ \hline 15 | \end{tabular}} 16 | \caption{Overview of highest exposure project risks} 17 | \end{table} -------------------------------------------------------------------------------- /documentation/project charter latex/tex/roles_responsibilities.tex: -------------------------------------------------------------------------------- 1 | Who are the stakeholders of the project? Who will be the point of contact from the sponsor or customer side? Who are the team members, and what will be their areas of responsibility? Will your team maintain the product owner and scrum master for the whole project, or will that role change periodically? This section should occupy 1/2 - 1 full page. -------------------------------------------------------------------------------- /documentation/project charter latex/tex/system_overview.tex: -------------------------------------------------------------------------------- 1 | Explain, at a high level, how you will implement a solution to the problem. Include a diagram of major components to the system (not a full architectural design, but a high level overview of the major system components and how a user or external system might interface). Avoid specific implementation details (operating system, programming languages, etc.). This section should occupy at least 1 full page. -------------------------------------------------------------------------------- /documentation/project charter latex/tex/value_proposition.tex: -------------------------------------------------------------------------------- 1 | The Value Proposition explains how the sponsors will benefit from your work, and why they should invest funding, time, and expertise in supporting your team. Here, you are essentially making a case for the project. There are many ways in which value can be returned to your stakeholders (industrial sponsors, instructors, the university, etc.), list any that may help you convince them to "buy in". -------------------------------------------------------------------------------- /documentation/sprint presentations/Sprint Plan Template.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/sprint presentations/Sprint Plan Template.pptx -------------------------------------------------------------------------------- /documentation/sprint presentations/Sprint Review Template.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/sprint presentations/Sprint Review Template.pptx -------------------------------------------------------------------------------- /documentation/sprint presentations/burndown chart template.xls: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/sprint presentations/burndown chart template.xls -------------------------------------------------------------------------------- /documentation/system requirements specification LaTeX.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/system requirements specification LaTeX.zip -------------------------------------------------------------------------------- /documentation/system requirements specification LaTeX/tex/security_requirements.tex: -------------------------------------------------------------------------------- 1 | Include a header paragraph specific to your product here. In this section specify any requirements related to information security or privacy. This may include items such as encryption standards, data storage procedures, authentication, password strength, etc. 2 | 3 | \subsection{Requirement Name} 4 | \subsubsection{Description} 5 | Detailed requirement description... 6 | \subsubsection{Source} 7 | Source 8 | \subsubsection{Constraints} 9 | Detailed description of applicable constraints... 10 | \subsubsection{Standards} 11 | List of applicable standards 12 | \subsubsection{Priority} 13 | Priority -------------------------------------------------------------------------------- /documentation/system requirements specification latex/images/test_image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/system requirements specification latex/images/test_image.jpg -------------------------------------------------------------------------------- /documentation/system requirements specification latex/reference/refs.bib: -------------------------------------------------------------------------------- 1 | @book{Rubin2012, 2 | author = {Rubin, Kenneth S}, 3 | edition = {1st}, 4 | isbn = {0137043295, 9780137043293}, 5 | publisher = {Addison-Wesley Professional}, 6 | title = {{Essential Scrum: A Practical Guide to the Most Popular Agile Process}}, 7 | year = {2012} 8 | } 9 | 10 | -------------------------------------------------------------------------------- /documentation/system requirements specification latex/system_requirements_specification.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/system requirements specification latex/system_requirements_specification.pdf -------------------------------------------------------------------------------- /documentation/system requirements specification latex/tex/customer_requirements.tex: -------------------------------------------------------------------------------- 1 | Include a header paragraph specific to your product here. Customer requirements are those required features and functions specified for and by the intended audience for this product. This section establishes, clearly and concisely, the "look and feel" of the product, what each potential end-user should expect the product do and/or not do. Each requirement specified in this section is associated with a specific customer need that will be satisfied. In general Customer Requirements are the directly observable features and functions of the product that will be encountered by its users. Requirements specified in this section are created with, and must not be changed without, specific agreement of the intended customer/user/sponsor. 2 | 3 | \subsection{Requirement Name} 4 | \subsubsection{Description} 5 | A detailed description of the feature/function that satisfies the requirement. For example: \textit{The GUI background will be slate blue. This specific color is required in order to ensure that the GUI matches other similar software products offered by the customer. Slate blue is specified as \#007FFF, using six-digit hexadecimal color specification.} It is acceptable and advisable to include drawings/graphics in the description if it aids understanding of the requirement. 6 | \subsubsection{Source} 7 | The source of the requirement (e.g. customer, sponsor, specified team member (by name), federal regulation, local laws, CSE Senior Design project specifications, etc.) 8 | \subsubsection{Constraints} 9 | A detailed description of realistic constraints relevant to this requirement. Economic, environmental, social, political, ethical, health \& safety, manufacturability, and sustainability should be discussed as appropriate. 10 | \subsubsection{Standards} 11 | A detailed description of any specific standards that apply to this requirement (e.g. \textit{NSTM standard xx.xxx.x. color specifications \cite{Rubin2012}}. Standards exist for practically everything (ATC standard fuses, IEEE 802.15.4 embedded wireless, TLS 1.3 encryption, etc.), so be sure that you research and document which ones will be followed in meeting this requirement. 12 | \subsubsection{Priority} 13 | The priority of this requirement relative to other specified requirements. Use the following priorities: 14 | \begin{itemize} 15 | \item Critical (must have or product is a failure) 16 | \item High (very important to customer acceptance, desirability) 17 | \item Moderate (should have for proper product functionality); 18 | \item Low (nice to have, will include if time/resource permits) 19 | \item Future (not feasible in this version of the product, but should be considered for a future release). 20 | \end{itemize} 21 | 22 | \subsection{Requirement Name} 23 | \subsubsection{Description} 24 | Detailed requirement description... 25 | \subsubsection{Source} 26 | Source 27 | \subsubsection{Constraints} 28 | Detailed description of applicable constraints... 29 | \subsubsection{Standards} 30 | List of applicable standards 31 | \subsubsection{Priority} 32 | Priority 33 | -------------------------------------------------------------------------------- /documentation/system requirements specification latex/tex/future_items.tex: -------------------------------------------------------------------------------- 1 | In this last section, you will reiterate all requirements that are listed as priority 5. This is repetitive, but necessary as a concise statement of features/functions that were considered/discussed and documented herein, but will NOT be addressed in the prototype version of the product due to constraints of budget, time, skills, technology, feasibility analysis, etc. Use the following format for this section. 2 | 3 | \subsection{Requirement Name} 4 | \subsubsection{Description} 5 | Detailed requirement description... 6 | \subsubsection{Source} 7 | Source 8 | \subsubsection{Constraints} 9 | Detailed description of applicable constraints... 10 | \subsubsection{Standards} 11 | List of applicable standards 12 | \subsubsection{Priority} 13 | Priority -------------------------------------------------------------------------------- /documentation/system requirements specification latex/tex/maintenance_support_requirements.tex: -------------------------------------------------------------------------------- 1 | Include a header paragraph specific to your product here. Maintenance and support requirements address items specific to the ongoing maintenance and support of your product after delivery. Think of these requirements as if you were the ones who would be responsible for caring for customers/end user after the product is delivered in its final form and in use "in the field". What would you require to do this job? Specify items such as: where, how and who must be able to maintain the product to correct errors, hardware failures, etc.; required support/troubleshooting manuals/guides; availability/documentation of source code; related technical documentation that must be available for maintainers; specific/unique tools required for maintenance; specific software/environment required for maintenance; etc. 2 | 3 | \subsection{Requirement Name} 4 | \subsubsection{Description} 5 | Detailed requirement description... 6 | \subsubsection{Source} 7 | Source 8 | \subsubsection{Constraints} 9 | Detailed description of applicable constraints... 10 | \subsubsection{Standards} 11 | List of applicable standards 12 | \subsubsection{Priority} 13 | Priority -------------------------------------------------------------------------------- /documentation/system requirements specification latex/tex/other_requirements.tex: -------------------------------------------------------------------------------- 1 | Include a header paragraph specific to your product here. In this section specify anything else that is required for the product to be deemed complete. Include requirements related to customer setup and configuration if not specified in a previous requirement. Add any known requirements related to product architecture/design, such as modularity, extensibility (for future enhancements), or adaptation for a specific programming language. Consider requirements such as portability of your source code to various platforms (Windows, Linux, Unix Mac OS, etc.). 2 | 3 | \subsection{Requirement Name} 4 | \subsubsection{Description} 5 | Detailed requirement description... 6 | \subsubsection{Source} 7 | Source 8 | \subsubsection{Constraints} 9 | Detailed description of applicable constraints... 10 | \subsubsection{Standards} 11 | List of applicable standards 12 | \subsubsection{Priority} 13 | Priority -------------------------------------------------------------------------------- /documentation/system requirements specification latex/tex/packaging_requirements.tex: -------------------------------------------------------------------------------- 1 | Include a header paragraph here. Packaging requirements are those requirements that identify how the delivered product will be packaged for delivery to the end-user; or how it will "look" when finished and delivered. For example, you might specify that the software required for operation will be pre-loaded on the hard drive, delivered on CD/DVD, or available via download. Software might be customer installable, or not, etc. Hardware components could be all in a single package, provided as a "bag of parts" to be assembled/installed by the user, painted a certain color, logos affixed, etc. Care should be taken not to duplicate requirements found in other sections of this document. 2 | 3 | \subsection{Requirement Name} 4 | \subsubsection{Description} 5 | Detailed requirement description... 6 | \subsubsection{Source} 7 | Source 8 | \subsubsection{Constraints} 9 | Detailed description of applicable constraints... 10 | \subsubsection{Standards} 11 | List of applicable standards 12 | \subsubsection{Priority} 13 | Priority -------------------------------------------------------------------------------- /documentation/system requirements specification latex/tex/performance_requirements.tex: -------------------------------------------------------------------------------- 1 | Include a header paragraph specific to your product here. Performance requirements address items such as: how fast specific critical operations must complete; how long it takes to start/stop activities; how long the battery must last; maximum time it must take to set up; etc. 2 | 3 | \subsection{Requirement Name} 4 | \subsubsection{Description} 5 | Detailed requirement description... 6 | \subsubsection{Source} 7 | Source 8 | \subsubsection{Constraints} 9 | Detailed description of applicable constraints... 10 | \subsubsection{Standards} 11 | List of applicable standards 12 | \subsubsection{Priority} 13 | Priority -------------------------------------------------------------------------------- /documentation/system requirements specification latex/tex/product_concept.tex: -------------------------------------------------------------------------------- 1 | This section provides a high-level statement of your product concept - what it is intended to do and how it is intended to be used. Include in this header paragraph, a brief synopsis of what is described here. For example, this header paragraph might say something like: "This section describes the purpose, use and intended user audience for the X product. X is a system that performs Y. Users of X will be able to Z..." 2 | 3 | \subsection{Purpose and Use} 4 | This is where you describe in a brief, yet clear and concise, manner what your product should do and how you expect it should be used. 5 | 6 | \subsection{Intended Audience} 7 | This is where you describe the intended audience(s) of your product. If this product were to be made available publicly or commercially, who would purchase or use it? Is the product designed for a particular customer, or an overall class of customers? Is it intended for general use, or is it a specific component of a more complex system? 8 | 9 | \begin{figure}[h!] 10 | \centering 11 | \includegraphics[width=0.60\textwidth]{images/test_image} 12 | \caption{X conceptual drawing} 13 | \end{figure} 14 | -------------------------------------------------------------------------------- /documentation/system requirements specification latex/tex/product_description.tex: -------------------------------------------------------------------------------- 1 | This section provides a description of your product and defines it's primary features and functions. The purpose is to give the document reader/reviewer enough information about the product to allow them to easily follow the specification of requirements found in the remainder of the document. Your header for this section should introduce the section with a brief statement such as: "This section provides the reader with an overview of X. The primary operational aspects of the product, from the perspective of end users, maintainers and administrators, are defined here. The key features and functions found in the product, as well as critical user interactions and user interfaces are described in detail." Using words, and pictures or graphics where possible, specify the following: 2 | 3 | \subsection{Features \& Functions} 4 | What the product does and does not do. Specify in words what it looks like, referring to a conceptual diagram/graphic (Figure X). Define the principle parts/components of the product. Specify the elements in the diagram/graphic that are part(s) of this product as well as any associated external elements (e.g., the Internet, an external web server, a GPS satellite, etc.) 5 | 6 | \subsection{External Inputs \& Outputs} 7 | Describe critical external data flows. What does your product require/expect to receive from end users or external systems (inputs), and what is expected to be created by your product for consumption by end users or external systems (outputs)? In other words, specify here all data/information to flow into and out of your systems. A table works best here, with rows for each critical data element, and columns for name, description and use. 8 | 9 | \subsection{Product Interfaces} 10 | Specify what all operational (visible) interfaces look like to your end-user, administrator, maintainer, etc. Show sample/mocked-up screen shots, graphics of buttons, panels, etc. Refer to the critical external inputs and outputs described in the paragraph above. 11 | -------------------------------------------------------------------------------- /documentation/system requirements specification latex/tex/safety_requirements.tex: -------------------------------------------------------------------------------- 1 | Include a header paragraph specific to your product here. Safety requirements might address items specific to your product such as: no exposure to toxic chemicals; lack of sharp edges that could harm a user; no breakable glass in the enclosure; no direct eye exposure to infrared/laser beams; packaging/grounding of electrical connections to avoid shock; etc. 2 | 3 | \subsection{Laboratory equipment lockout/tagout (LOTO) procedures} 4 | \subsubsection{Description} 5 | Any fabrication equipment provided used in the development of the project shall be used in accordance with OSHA standard LOTO procedures. Locks and tags are installed on all equipment items that present use hazards, and ONLY the course instructor or designated teaching assistants may remove a lock. All locks will be immediately replaced once the equipment is no longer in use. 6 | \subsubsection{Source} 7 | CSE Senior Design laboratory policy 8 | \subsubsection{Constraints} 9 | Equipment usage, due to lock removal policies, will be limited to availability of the course instructor and designed teaching assistants. 10 | \subsubsection{Standards} 11 | Occupational Safety and Health Standards 1910.147 - The control of hazardous energy (lockout/tagout). 12 | \subsubsection{Priority} 13 | Critical 14 | 15 | \subsection{National Electric Code (NEC) wiring compliance} 16 | \subsubsection{Description} 17 | Any electrical wiring must be completed in compliance with all requirements specified in the National Electric Code. This includes wire runs, insulation, grounding, enclosures, over-current protection, and all other specifications. 18 | \subsubsection{Source} 19 | CSE Senior Design laboratory policy 20 | \subsubsection{Constraints} 21 | High voltage power sources, as defined in NFPA 70, will be avoided as much as possible in order to minimize potential hazards. 22 | \subsubsection{Standards} 23 | NFPA 70 24 | \subsubsection{Priority} 25 | Critical 26 | 27 | \subsection{RIA robotic manipulator safety standards} 28 | \subsubsection{Description} 29 | Robotic manipulators, if used, will either housed in a compliant lockout cell with all required safety interlocks, or certified as a "collaborative" unit from the manufacturer. 30 | \subsubsection{Source} 31 | CSE Senior Design laboratory policy 32 | \subsubsection{Constraints} 33 | Collaborative robotic manipulators will be preferred over non-collaborative units in order to minimize potential hazards. Sourcing and use of any required safety interlock mechanisms will be the responsibility of the engineering team. 34 | \subsubsection{Standards} 35 | ANSI/RIA R15.06-2012 American National Standard for Industrial Robots and Robot Systems, RIA TR15.606-2016 Collaborative Robots 36 | \subsubsection{Priority} 37 | Critical 38 | -------------------------------------------------------------------------------- /documentation/test plan/STP Guide.doc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/test plan/STP Guide.doc -------------------------------------------------------------------------------- /documentation/test plan/ieee829mtp.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/documentation/test plan/ieee829mtp.pdf -------------------------------------------------------------------------------- /drones/3D print/Here3 straddle mount.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/drones/3D print/Here3 straddle mount.stl -------------------------------------------------------------------------------- /drones/3D print/S550 CubeOrange vibration mount - BOTTOM.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/drones/3D print/S550 CubeOrange vibration mount - BOTTOM.stl -------------------------------------------------------------------------------- /drones/3D print/S550 CubeOrange vibration mount - TOP.stl: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/drones/3D print/S550 CubeOrange vibration mount - TOP.stl -------------------------------------------------------------------------------- /esp8266/access_point_http_server/access_point_http_server.ino: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | // create a webserver running on port 80 8 | ESP8266WebServer server(80); 9 | 10 | // define pin settings 11 | const int LED_PIN = 16; 12 | 13 | // define access point settings 14 | const char * ssid = "ESP8266 Access Point"; 15 | const char * password = "esp8266arduino"; 16 | 17 | // define function prototypes for HTTP handlers 18 | void handleRoot(); 19 | void handleLED(); 20 | void handleNotFound(); 21 | 22 | void setup() 23 | { 24 | // initialize the debugging serial port 25 | Serial.begin(115200); 26 | delay(10); 27 | Serial.println('\n'); 28 | 29 | // setup LED pin 30 | pinMode(LED_PIN, OUTPUT); 31 | 32 | // start the access point 33 | WiFi.softAP(ssid, password); 34 | Serial.print("Access Point \""); 35 | Serial.print(ssid); 36 | Serial.println("\" started"); 37 | 38 | // print the IP address 39 | Serial.print("IP address:\t"); 40 | Serial.println(WiFi.softAPIP()); 41 | 42 | // start handlers for HTTP requests 43 | server.on("/", handleRoot); 44 | server.on("/LED", HTTP_POST, handleLED); 45 | server.onNotFound(handleNotFound); 46 | 47 | // start the server 48 | server.begin(); 49 | Serial.println("HTTP server started"); 50 | } 51 | 52 | // program main 53 | void loop(void) 54 | { 55 | // listen for HTTP requests from clients 56 | server.handleClient(); 57 | } 58 | 59 | // handler for requests at root path 60 | void handleRoot() 61 | { 62 | // send response message with 200 HTTP status code 63 | server.send(200, "text/plain", "Hello world!"); 64 | } 65 | 66 | // handler for requests at LED path 67 | void handleLED() 68 | { 69 | // change LED state 70 | digitalWrite(LED_PIN,!digitalRead(LED_PIN)); 71 | 72 | // send the response 73 | server.send(200, "text/plain", "LED state changed!"); 74 | } 75 | 76 | // handler for undefined paths 77 | void handleNotFound() 78 | { 79 | // send response message with 404 HTTP status code 80 | server.send(404, "text/plain", "404: Not found"); 81 | } 82 | -------------------------------------------------------------------------------- /lab storage card/README.md: -------------------------------------------------------------------------------- 1 | Lab storage reservation card 2 | ======== 3 | 4 | 1. Enter your project information in the fillable PDF, replacing all default fields with appropriate values. 5 | 2. Print out the sheet and cut out the 3x5 rectangular card. 6 | 3. Place the card in the plastic sleeve on your storage container -------------------------------------------------------------------------------- /lab storage card/storage reservation card.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/lab storage card/storage reservation card.docx -------------------------------------------------------------------------------- /lab storage card/storage reservation card.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/lab storage card/storage reservation card.pdf -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/.vs/SimpleLibrarySlmpFx5/FileContentIndex/37879a3a-372a-420f-a687-849b2a63f15d.vsidx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/.vs/SimpleLibrarySlmpFx5/FileContentIndex/37879a3a-372a-420f-a687-849b2a63f15d.vsidx -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/.vs/SimpleLibrarySlmpFx5/FileContentIndex/8a4abcec-d0b3-4d25-8a0d-2267f4e71647.vsidx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/.vs/SimpleLibrarySlmpFx5/FileContentIndex/8a4abcec-d0b3-4d25-8a0d-2267f4e71647.vsidx -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/.vs/SimpleLibrarySlmpFx5/FileContentIndex/read.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/.vs/SimpleLibrarySlmpFx5/FileContentIndex/read.lock -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/.vs/SimpleLibrarySlmpFx5/v17/.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/.vs/SimpleLibrarySlmpFx5/v17/.suo -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2013 4 | VisualStudioVersion = 12.0.40629.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SimpleLibrarySlmpFx5", "SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5.csproj", "{622395AE-A242-40E0-9E95-EAE57863F0AD}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | EndGlobalSection 13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 14 | {622395AE-A242-40E0-9E95-EAE57863F0AD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 15 | {622395AE-A242-40E0-9E95-EAE57863F0AD}.Debug|Any CPU.Build.0 = Debug|Any CPU 16 | {622395AE-A242-40E0-9E95-EAE57863F0AD}.Release|Any CPU.ActiveCfg = Release|Any CPU 17 | {622395AE-A242-40E0-9E95-EAE57863F0AD}.Release|Any CPU.Build.0 = Release|Any CPU 18 | EndGlobalSection 19 | GlobalSection(SolutionProperties) = preSolution 20 | HideSolutionNode = FALSE 21 | EndGlobalSection 22 | EndGlobal 23 | -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5.v12.suo -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/App.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Text; 5 | using System.Threading.Tasks; 6 | 7 | namespace SimpleLibrarySlmpFx5 8 | { 9 | class Program 10 | { 11 | static void Main(string[] args) 12 | { 13 | SimpleLibSlmpFx5.SimpleSlmp connection1 = new SimpleLibSlmpFx5.SimpleSlmp(); 14 | byte[] newIpAdress = new byte[4]; 15 | newIpAdress[0] = 192; newIpAdress[1] = 168; newIpAdress[2] = 0; newIpAdress[3] = 250; 16 | string ans = connection1.Open(newIpAdress, 2000); 17 | Console.WriteLine("Result from opening connection: " + ans); 18 | if (ans == string.Empty) 19 | { 20 | /* 21 | bool m10Value = false; 22 | ans = connection1.ReadBit("M", 10, ref m10Value); 23 | Console.WriteLine("Ans: " + ans + ", Read bit of M10 before invert: " + m10Value.ToString()); 24 | //Console.ReadKey(); 25 | bool m10ValueSet = !m10Value; 26 | ans = connection1.WriteBit("M", 10, m10ValueSet); 27 | Console.WriteLine("Write bit M10 Ans: " + ans); 28 | //Console.ReadKey(); 29 | ans = connection1.ReadBit("M", 10, ref m10Value); 30 | Console.WriteLine("Ans: " + ans + ",Read bit of M10 after invert: " + m10Value.ToString()); 31 | //Console.ReadKey(); 32 | */ 33 | Int16 d10Value = 0; 34 | ans = connection1.ReadWord("D", 200, ref d10Value); 35 | Console.WriteLine("Ans: " + ans + ",Read value of D10 before increment: " + d10Value.ToString()); 36 | Console.ReadKey(); 37 | d10Value++; 38 | ans = connection1.WriteWord("D", 10, d10Value); 39 | Console.WriteLine("Write value D10 Ans: " + ans); 40 | Console.ReadKey(); 41 | ans = connection1.ReadWord("D", 10, ref d10Value); 42 | Console.WriteLine("Ans: " + ans + ",Read value of D10 after increment: " + d10Value.ToString()); 43 | Console.ReadKey(); 44 | } 45 | connection1.Close(); 46 | Console.ReadKey(); 47 | } 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("SimpleLibrarySlmpFx5")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Mitsubishi Electric")] 12 | [assembly: AssemblyProduct("SimpleLibrarySlmpFx5")] 13 | [assembly: AssemblyCopyright("Copyright © Mitsubishi Electric 2020")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("f8ca796b-3529-47be-95c7-adc3ecc24576")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | AnyCPU 7 | {622395AE-A242-40E0-9E95-EAE57863F0AD} 8 | Exe 9 | Properties 10 | SimpleLibrarySlmpFx5 11 | SimpleLibrarySlmpFx5 12 | v4.8 13 | 512 14 | 15 | 16 | 17 | AnyCPU 18 | true 19 | full 20 | false 21 | bin\Debug\ 22 | DEBUG;TRACE 23 | prompt 24 | 4 25 | 26 | 27 | AnyCPU 28 | pdbonly 29 | true 30 | bin\Release\ 31 | TRACE 32 | prompt 33 | 4 34 | 35 | 36 | 37 | ..\..\SimpleLibSlmpFx5\SimpleLibSlmpFx5\bin\Release\SimpleLibSlmpFx5.dll 38 | 39 | 40 | False 41 | ..\..\..\SLMP_Communication IQF_IQR\SLMP_EDC_LIB.dll 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 66 | -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Debug/SLMP_EDC_LIB.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Debug/SLMP_EDC_LIB.dll -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Debug/SimpleLibSlmpFx5.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Debug/SimpleLibSlmpFx5.dll -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Debug/SimpleLibSlmpFx5.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Debug/SimpleLibSlmpFx5.pdb -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Debug/SimpleLibrarySlmpFx5.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Debug/SimpleLibrarySlmpFx5.exe -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Debug/SimpleLibrarySlmpFx5.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Debug/SimpleLibrarySlmpFx5.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Debug/SimpleLibrarySlmpFx5.pdb -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Debug/SimpleLibrarySlmpFx5.vshost.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Debug/SimpleLibrarySlmpFx5.vshost.exe -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Debug/SimpleLibrarySlmpFx5.vshost.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Debug/SimpleLibrarySlmpFx5.vshost.exe.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Release/SLMP_EDC_LIB.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Release/SLMP_EDC_LIB.dll -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Release/SimpleLibSlmpFx5.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Release/SimpleLibSlmpFx5.dll -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Release/SimpleLibSlmpFx5.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Release/SimpleLibSlmpFx5.pdb -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Release/SimpleLibrarySlmpFx5.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Release/SimpleLibrarySlmpFx5.exe -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Release/SimpleLibrarySlmpFx5.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Release/SimpleLibrarySlmpFx5.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Release/SimpleLibrarySlmpFx5.pdb -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Release/SimpleLibrarySlmpFx5.vshost.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Release/SimpleLibrarySlmpFx5.vshost.exe -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Release/SimpleLibrarySlmpFx5.vshost.exe.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/bin/Release/SimpleLibrarySlmpFx5.vshost.exe.manifest: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Debug/SimpleLibrarySlmpFx5.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Debug\SimpleLibrarySlmpFx5.exe.config 2 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\obj\Debug\SimpleLibrarySlmpFx5.csprojResolveAssemblyReference.cache 3 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Debug\SimpleLibrarySlmpFx5.exe 4 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Debug\SimpleLibrarySlmpFx5.pdb 5 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Debug\SimpleLibSlmpFx5.dll 6 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Debug\SLMP_EDC_LIB.dll 7 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Debug\SimpleLibSlmpFx5.pdb 8 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\obj\Debug\SimpleLibrarySlmpFx5.exe 9 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\obj\Debug\SimpleLibrarySlmpFx5.pdb 10 | -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Debug/SimpleLibrarySlmpFx5.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Debug/SimpleLibrarySlmpFx5.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Debug/SimpleLibrarySlmpFx5.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Debug/SimpleLibrarySlmpFx5.exe -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Debug/SimpleLibrarySlmpFx5.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Debug/SimpleLibrarySlmpFx5.pdb -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Debug/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Debug/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Debug/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/.NETFramework,Version=v4.8.AssemblyAttributes.cs: -------------------------------------------------------------------------------- 1 | // 2 | using System; 3 | using System.Reflection; 4 | [assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] 5 | -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/SimpleLibrarySlmpFx5.csproj.AssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/SimpleLibrarySlmpFx5.csproj.AssemblyReference.cache -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/SimpleLibrarySlmpFx5.csproj.CoreCompileInputs.cache: -------------------------------------------------------------------------------- 1 | 5cc1af3eca5223f3cb2ab2ee3e65ab8a67218497 2 | -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/SimpleLibrarySlmpFx5.csproj.FileListAbsolute.txt: -------------------------------------------------------------------------------- 1 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Release\SimpleLibrarySlmpFx5.exe.config 2 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Release\SimpleLibrarySlmpFx5.exe 3 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Release\SimpleLibrarySlmpFx5.pdb 4 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Release\SimpleLibSlmpFx5.dll 5 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Release\SLMP_EDC_LIB.dll 6 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Release\SimpleLibSlmpFx5.pdb 7 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\obj\Release\SimpleLibrarySlmpFx5.csprojResolveAssemblyReference.cache 8 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\obj\Release\SimpleLibrarySlmpFx5.exe 9 | C:\!DaneBG\Sieci\Slmp\SimpleSlmpDll\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\obj\Release\SimpleLibrarySlmpFx5.pdb 10 | C:\Users\murr\Documents\GitHub\cse4316\mitsubishi PLC\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Release\SimpleLibrarySlmpFx5.exe.config 11 | C:\Users\murr\Documents\GitHub\cse4316\mitsubishi PLC\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Release\SimpleLibrarySlmpFx5.exe 12 | C:\Users\murr\Documents\GitHub\cse4316\mitsubishi PLC\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Release\SimpleLibrarySlmpFx5.pdb 13 | C:\Users\murr\Documents\GitHub\cse4316\mitsubishi PLC\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\bin\Release\SimpleLibSlmpFx5.pdb 14 | C:\Users\murr\Documents\GitHub\cse4316\mitsubishi PLC\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\obj\Release\SimpleLibrarySlmpFx5.csproj.AssemblyReference.cache 15 | C:\Users\murr\Documents\GitHub\cse4316\mitsubishi PLC\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\obj\Release\SimpleLibrarySlmpFx5.csproj.SuggestedBindingRedirects.cache 16 | C:\Users\murr\Documents\GitHub\cse4316\mitsubishi PLC\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\obj\Release\SimpleLibrarySlmpFx5.csproj.CoreCompileInputs.cache 17 | C:\Users\murr\Documents\GitHub\cse4316\mitsubishi PLC\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\obj\Release\SimpleLibrarySlmpFx5.csproj.CopyComplete 18 | C:\Users\murr\Documents\GitHub\cse4316\mitsubishi PLC\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\obj\Release\SimpleLibrarySlmpFx5.exe 19 | C:\Users\murr\Documents\GitHub\cse4316\mitsubishi PLC\SimpleLibrarySlmpFx5\SimpleLibrarySlmpFx5\obj\Release\SimpleLibrarySlmpFx5.pdb 20 | -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/SimpleLibrarySlmpFx5.csproj.SuggestedBindingRedirects.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/SimpleLibrarySlmpFx5.csproj.SuggestedBindingRedirects.cache -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/SimpleLibrarySlmpFx5.csprojResolveAssemblyReference.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/SimpleLibrarySlmpFx5.csprojResolveAssemblyReference.cache -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/SimpleLibrarySlmpFx5.exe: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/SimpleLibrarySlmpFx5.exe -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/SimpleLibrarySlmpFx5.pdb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/SimpleLibrarySlmpFx5.pdb -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/TemporaryGeneratedFile_036C0B5B-1481-4323-8D20-8F5ADCB23D92.cs -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/TemporaryGeneratedFile_5937a670-0e60-4077-877b-f7221da3dda1.cs -------------------------------------------------------------------------------- /mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/mitsubishi PLC/SimpleLibrarySlmpFx5/SimpleLibrarySlmpFx5/obj/Release/TemporaryGeneratedFile_E7A71F73-0F8D-4B9B-B56E-8E70B10BC5D3.cs -------------------------------------------------------------------------------- /nodejs/child_process.js: -------------------------------------------------------------------------------- 1 | /*******************************************************************************************************************//** 2 | * HTTP Client for posting messages 3 | ***********************************************************************************************************************/ 4 | 5 | // import http module for requests 6 | var http = require('http'); 7 | 8 | // create the request header and endpoint configuration 9 | var httpPostOptions = { 10 | host: "127.0.0.1", 11 | port: 8080, 12 | path: "/", 13 | method: "POST", 14 | headers: {"content-type": "text/plain"}, 15 | }; 16 | 17 | // define a function to handle outgoing HTTP POST messages 18 | function httpPost(string) 19 | { 20 | // set up the request 21 | var request = http.request(httpPostOptions); 22 | 23 | // fill the message body and send the request 24 | request.write(string); 25 | request.end(); 26 | 27 | // handle a transmission failure 28 | request.on('error', function (res, socket, head) { 29 | console.log("WARNING: HTTP POST failed!"); 30 | }); 31 | } 32 | 33 | /*******************************************************************************************************************//** 34 | * Child process spawning and event handling 35 | ***********************************************************************************************************************/ 36 | 37 | // define a function to handle child process stdout events 38 | function childHandleStdout(data) 39 | { 40 | // handle individual lines or full text blocks 41 | var separateLines = false; 42 | if(separateLines) 43 | { 44 | // separate full lines of text 45 | var strings = data.toString().split("\n"); 46 | 47 | // iteratively handle each received line of text 48 | for(var i = 0; i < strings.length; i++) 49 | { 50 | // post the data 51 | httpPost(strings[i]); 52 | } 53 | } 54 | else 55 | { 56 | // post the data 57 | httpPost(data); 58 | } 59 | } 60 | 61 | // define a function to handle child process stderr events 62 | function childHandleStderr(data) 63 | { 64 | console.log('Child process STDERR: %s \n', data.toString()); 65 | } 66 | 67 | // define a function to handle child process close events 68 | function childHandleClose(code) 69 | { 70 | console.log('Child process CLOSE: %s \n', code.toString()); 71 | } 72 | 73 | // import the child_process module for syscalls 74 | var spawn = require('child_process').spawn; 75 | 76 | // spawn the child process 77 | var child_command = "ipconfig"; 78 | var child = spawn(child_command); 79 | console.log("Child process launched with process ID %d \n", child.pid); 80 | 81 | // link output events to the proper handlers 82 | child.stdout.on('data', childHandleStdout); 83 | child.stderr.on('data', childHandleStderr); 84 | child.on('close', childHandleClose); 85 | -------------------------------------------------------------------------------- /nodejs/hello.js: -------------------------------------------------------------------------------- 1 | console.log('Hello World'); -------------------------------------------------------------------------------- /nodejs/requestImage/TEST_URL.txt: -------------------------------------------------------------------------------- 1 | Enter in browser... 2 | 3 | http://127.0.0.1:8080/user/1234/album/test.jpg 4 | 5 | 6 | -------------------------------------------------------------------------------- /nodejs/requestImage/server.js: -------------------------------------------------------------------------------- 1 | var express = require('express') 2 | var fs = require('fs'); 3 | var app = express() 4 | 5 | app.get('/', function (req, res) { 6 | console.log('received a request!') 7 | res.send('Hello World!') 8 | }) 9 | 10 | app.listen(8080, function () { 11 | console.log('Example app listening on port 8080!') 12 | }) 13 | 14 | 15 | // based on example: http://expressjs.com/en/api.html#res.sendFile 16 | app.get('/user/:uid/album/:file', function(request, response){ 17 | var uid = request.params.uid; 18 | var file = request.params.file; 19 | var path = __dirname + '/user/' + uid + '/album/' + file; 20 | 21 | var isAllowed = true; // replace with a function that checks to see if the user is authenticated and has permission to access the file 22 | var fileExists = fs.existsSync(path); 23 | 24 | if (!isAllowed) { 25 | console.log('forbidden') 26 | response.status(403).send("Forbidden"); 27 | } else if (!fileExists) { 28 | console.log('file not found') 29 | response.status(404).send("File not found"); 30 | } else { 31 | console.log('send file') 32 | response.sendFile(__dirname + '/user/' + uid + '/album/' + file); 33 | } 34 | }); 35 | 36 | 37 | -------------------------------------------------------------------------------- /nodejs/requestImage/user/1234/album/test.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/nodejs/requestImage/user/1234/album/test.jpg -------------------------------------------------------------------------------- /nodejs/server.js: -------------------------------------------------------------------------------- 1 | // import HTTP module 2 | var http = require('http'); 3 | 4 | // define the listening port 5 | const PORT=8080; 6 | 7 | // define a function to handle requests and send a response 8 | function handleRequest(request, response) 9 | { 10 | // handle all of the chunks of incoming data 11 | console.log('Receiving message...') 12 | var body = []; 13 | request.on('data', function(chunk) { 14 | body.push(chunk); 15 | }).on('end', function() { 16 | // assemble the entire message from all of the received chunks 17 | body = Buffer.concat(body).toString(); 18 | console.log(body) 19 | 20 | // send message response 21 | response.end('Responding to request at path: ' + request.url); 22 | console.log('Response sent'); 23 | }); 24 | } 25 | 26 | // define a function to handle server launch 27 | function serverStart() 28 | { 29 | // callback triggered when server is successfully listening 30 | console.log("Server listening on: http://localhost:%s", PORT); 31 | } 32 | 33 | // create a server 34 | var server = http.createServer(handleRequest); 35 | 36 | // start the server 37 | server.listen(PORT, serverStart); 38 | -------------------------------------------------------------------------------- /openlayers/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | OpenLayers web map 7 | 8 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /openlayers/main.js: -------------------------------------------------------------------------------- 1 | 2 | window.onload = init; 3 | 4 | // initialization function to be called on page load 5 | function init(){ 6 | const map = new ol.Map({ 7 | view: new ol.View({ 8 | projection: 'EPSG:4326', // sets map coordinate system to lon/lat (default is EPSG:3857) 9 | center: [-97.11325733587586, 32.73282849481263], 10 | zoom: 16, 11 | maxZoom: 20, 12 | minZoom: 4, 13 | rotation: 0.0, 14 | }), 15 | layers: [ 16 | new ol.layer.Tile({ 17 | source: new ol.source.OSM() 18 | }) 19 | ], 20 | target: 'js-map' 21 | }) 22 | 23 | // handler for map clicks 24 | map.on('click', function(e){ 25 | console.log(e.coordinate); 26 | }) 27 | 28 | // styles for map annotations 29 | const fillStyle = new ol.style.Fill({ 30 | color: [0, 0, 255, 0.25] 31 | }) 32 | const strokeStyle = new ol.style.Stroke({ 33 | color: [0, 255, 0, 1.0], 34 | width: 1.2 35 | }) 36 | const circleStyle = new ol.style.Circle({ 37 | fill: new ol.style.Fill({ 38 | color: [255, 0, 0, 1.0] 39 | }), 40 | radius: 5, 41 | stroke: strokeStyle 42 | }) 43 | 44 | // vector layers 45 | const geoJSON = new ol.layer.VectorImage({ 46 | source: new ol.source.Vector({ 47 | url: './map.geojson', // geojson map can be created at https://geojson.io/ 48 | format: new ol.format.GeoJSON() 49 | }), 50 | visible: true, 51 | title: 'GeoJSON', 52 | style: new ol.style.Style({ 53 | fill: fillStyle, 54 | stroke: strokeStyle, 55 | image: circleStyle 56 | }) 57 | }) 58 | map.addLayer(geoJSON); 59 | } -------------------------------------------------------------------------------- /openlayers/map.geojson: -------------------------------------------------------------------------------- 1 | {"type":"FeatureCollection","features":[{"type":"Feature","properties":{},"geometry":{"type":"Polygon","coordinates":[[[-97.11451649665831,32.73373617055212],[-97.1144950389862,32.73189956070322],[-97.11325585842133,32.73191761110699],[-97.11326658725737,32.73115046572302],[-97.11221516132355,32.73112790252354],[-97.11215615272522,32.733679764179016],[-97.11451649665831,32.73373617055212]]]}},{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[-97.11382985115051,32.73258096091035]}},{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[-97.1125853061676,32.73330748122123]}},{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[-97.11264967918396,32.732404970627314]}},{"type":"Feature","properties":{},"geometry":{"type":"Point","coordinates":[-97.11260676383972,32.731660392508076]}}]} -------------------------------------------------------------------------------- /openlayers/styles.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/openlayers/styles.css -------------------------------------------------------------------------------- /pcl_demo/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.8 FATAL_ERROR) 2 | project(PCL_demo) 3 | 4 | # set build type to release 5 | set(CMAKE_BUILD_TYPE "Release") 6 | 7 | # explicitly set c++11 8 | set(CMAKE_CXX_STANDARD 11) 9 | 10 | # configure PCL 11 | find_package(PCL 1.8.0 REQUIRED) 12 | include_directories(${PCL_INCLUDE_DIRS}) 13 | link_directories(${PCL_LIBRARY_DIRS}) 14 | add_definitions(${PCL_DEFINITIONS}) 15 | 16 | add_executable (load_pcd load_pcd.cpp CloudVisualizer.cpp) 17 | target_link_libraries (load_pcd ${PCL_LIBRARIES}) 18 | 19 | add_executable (openni2_snapper openni2_snapper.cpp) 20 | target_link_libraries (openni2_snapper ${PCL_LIBRARIES}) 21 | 22 | -------------------------------------------------------------------------------- /pupil_tracker/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | project (pupil_tracker) 2 | cmake_minimum_required(VERSION 2.8) 3 | 4 | # explicitly set c++11 5 | set(CMAKE_CXX_STANDARD 11) 6 | 7 | # configure OpenCV 8 | IF(WIN32) 9 | # set the opencv directories manually 10 | message("Windows platform detected, setting OpenCV configuration manually...") 11 | set(OPENCV_ROOT_DIR "C:/OpenCV") 12 | set(OPENCV_BUILD_DIR ${OPENCV_ROOT_DIR}/build/x64/vc12) 13 | set(OPENCV_INCLUDE_DIRS ${OPENCV_ROOT_DIR}/build/include; ${OPENCV_ROOT_DIR}/build/include/opencv; ${OPENCV_ROOT_DIR}/build/include/opencv2) 14 | set(OPENCV_LIB_DIRS ${OPENCV_BUILD_DIR}/lib) 15 | 16 | # set the include and link directories 17 | include_directories(${OPENCV_INCLUDE_DIRS}) 18 | link_directories(${OPENCV_LIB_DIRS}) 19 | 20 | # find all of the libs in OPENCV_LIB_DIRS 21 | file(GLOB OpenCV_LIBS RELATIVE ${OPENCV_LIB_DIRS} ${OPENCV_LIB_DIRS}/*.lib) 22 | message("Found OpenCV libs...") 23 | message(${OpenCV_LIBS}) 24 | ELSE(WIN32) 25 | find_package(OpenCV REQUIRED) 26 | ENDIF(WIN32) 27 | 28 | add_executable(pupil_demo pupil_demo.cpp PupilTracker.cpp) 29 | target_link_libraries(pupil_demo ${OpenCV_LIBS}) 30 | 31 | -------------------------------------------------------------------------------- /pupil_tracker/PupilTracker.h: -------------------------------------------------------------------------------- 1 | /********************************************************************************************************************** 2 | * @file PupilTracker.cpp 3 | * @brief Header for the PupilTracker class 4 | * 5 | * This class encapsulates the canny edge based pupil tracking algorithm 6 | * 7 | * @author Christopher D. McMurrough 8 | ***********************************************************************************************************************/ 9 | 10 | #ifndef PUPIL_TRACKER_H 11 | #define PUPIL_TRACKER_H 12 | 13 | #include "opencv2/opencv.hpp" 14 | 15 | /********************************************************************************************************************** 16 | * @class PupilTracker 17 | * 18 | * @brief Class for tracking pupils in an occulography image using canny edges 19 | * 20 | * @author Christopher D. McMurrough 21 | ***********************************************************************************************************************/ 22 | class PupilTracker 23 | { 24 | private: 25 | 26 | // result data structures 27 | cv::RotatedRect m_ellipseRectangle; 28 | 29 | // algorithm settings 30 | int m_blur; 31 | int m_canny_thresh; 32 | int m_canny_ratio; 33 | int m_canny_aperture; 34 | int m_bin_thresh; 35 | int m_pupilIntensityOffset; 36 | int m_glintIntensityOffset; 37 | int m_min_contour_size; 38 | float m_confidence; 39 | 40 | // debug settings 41 | bool m_display; 42 | 43 | public: 44 | 45 | // constructors 46 | PupilTracker(); 47 | 48 | // accessors 49 | cv::Point2f getEllipseCentroid(); 50 | cv::RotatedRect getEllipseRectangle(); 51 | 52 | // utility functions 53 | bool findPupil(const cv::Mat& imageIn); 54 | void setDisplay(bool display); 55 | }; 56 | 57 | #endif // PUPIL_TRACKER_H 58 | -------------------------------------------------------------------------------- /pupil_tracker/pupil_test.mp4: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/pupil_tracker/pupil_test.mp4 -------------------------------------------------------------------------------- /raspi_notes/openCV 2.4.10 raspbian install.txt: -------------------------------------------------------------------------------- 1 | sudo apt-get update 2 | sudo apt-get upgrade 3 | 4 | # INSTALL DEPENDENCIES 5 | sudo apt-get -y install build-essential cmake cmake-curses-gui pkg-config libpng12-0 libpng12-dev libpng++-dev libpng3 libpnglite-dev zlib1g-dbg zlib1g zlib1g-dev pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools libeigen3-dev libjpeg8 libjpeg8-dev libjpeg8-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec53 libavformat53 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev libgtk2.0-dev 6 | 7 | # DOWNLOAD OPENCV SOURCE 8 | cd ~ 9 | wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.4.10/opencv-2.4.10.zip 10 | unzip opencv-2.4.10.zip 11 | cd opencv-2.4.10 12 | 13 | # DOWNLOAD TBB 14 | cd 3rdparty/tbb 15 | sudo wget http://www.threadingbuildingblocks.org/sites/default/files/software_releases/source/tbb41_20130116oss_src.tgz 16 | sudo tar -xvzf tbb41_20130116oss_src.tgz 17 | cd ../.. 18 | 19 | # CONFIGURE OPENCV BUILD 20 | mkdir build 21 | cd build 22 | sudo cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_TBB=ON -D BUILD_TBB=ON -D WITH_QT=OFF -D WITH_OPENGL=ON -D WITH_V4L=ON -D ENABLE_VFPV3=ON -D ENABLE_NEON=ON .. 23 | 24 | # BUILD AND INSTALL OPENCV 25 | sudo make -j4 26 | sudo make install 27 | 28 | # INSTALL TBB 29 | cd ~/opencv-2.4.10/build/3rdparty/tbb/tbb41_20130116oss/build 30 | sudo sh generate_tbbvars.sh 31 | 32 | sudo echo export TBB_INSTALL_DIR="~/opencv-2.4.10/build/3rdparty/tbb/tbb41_20130116oss" | sudo tee -a ~/opencv-2.4.10/build/3rdparty/tbb/tbb41_20130116oss/build/tbbvars.sh 33 | echo source ~/opencv-2.4.10/build/3rdparty/tbb/tbb41_20130116oss/build/tbbvars.sh >> .bashrc 34 | sudo cp -r ~/opencv-2.4.10/build/3rdparty/tbb/tbb41_20130116oss/include/tbb /usr/include 35 | sudo cp ~/opencv-2.4.10/build/lib/libtbb.so /usr/lib 36 | 37 | # INSTALL BOOST 38 | sudo apt-get install libboost-dev 39 | 40 | # ENABLE CAMERA 41 | sudo modprobe bcm2835-v4l2 42 | -------------------------------------------------------------------------------- /raspi_notes/v4l2 raspicam install.txt: -------------------------------------------------------------------------------- 1 | ---------------- METHOD 1: USING PREBUILD BINARIES --------------- 2 | 3 | http://www.raspberrypi.org/camera-board-available-for-sale/ 4 | 5 | http://www.raspberrypi.org/forums/viewtopic.php?f=43&t=50639&start=100 6 | 7 | The latest release of the Raspbian Wheezy image has V4L2 drivers for the Camera Board. This means that you can use V4L2 Video Capture block to capture images from the Raspberry Pi Camera Board. To enable this, first upgrade your Raspbian: 8 | 9 | sudo apt-get update 10 | sudo apt-get dist-upgrade 11 | sudo rpi-update 12 | sudo reboot 13 | 14 | After reboot, execute the following command to load the V4L2 driver for the Raspberry Pi Camera: 15 | 16 | sudo modprobe bcm2835-v4l2 17 | 18 | After this step, you should see a /dev/video0 device (check by "ls -al /dev/vid*") that corresponds to the Camera Board. Now use the V4L2 Video Capture Block to capture images from this video device. 19 | 20 | 21 | ---------------- METHOD 2: BUILDING V4L-UTILITIES --------------- 22 | 23 | http://www.ics.com/blog/raspberry-pi-camera-module 24 | 25 | # Get the latest Raspbian packages 26 | sudo apt-get update 27 | sudo apt-get upgrade 28 | 29 | # Get the latest firmware 30 | sudo rpi-update 31 | 32 | # Get the source code for the V4L utilities 33 | git clone git://git.linuxtv.org/v4l-utils.git 34 | cd v4l-utils 35 | 36 | # Install some packages needed to build it 37 | sudo apt-get install autoconf gettext libtool libjpeg62-dev 38 | 39 | # Configure and build it. 40 | ./bootstrap.sh 41 | ./configure 42 | make 43 | sudo make install 44 | 45 | Building the software should take about fifteen minutes. You need to have the camera enabled and sufficient Graphics Processing Unit (GPU) memory configured. Here are some example commands to get started: 46 | 47 | # Load the module 48 | sudo modprobe bcm2835-v4l2 49 | 50 | # Control the viewfinder 51 | v4l2-ctl --overlay=1 # enable viewfinder 52 | v4l2-ctl --overlay=0 # disable viewfinder 53 | 54 | # Record a video 55 | v4l2-ctl --set-fmt-video=width=1920,height=1088,pixelformat=4 56 | v4l2-ctl --stream-mmap=3 --stream-count=100 --stream-to=somefile.264 57 | 58 | # Capture a JPEG image 59 | v4l2-ctl --set-fmt-video=width=2592,height=1944,pixelformat=3 60 | v4l2-ctl --stream-mmap=3 --stream-count=1 --stream-to=somefile.jpg 61 | 62 | # Set the video bitrate 63 | v4l2-ctl --set-ctrl video_bitrate=10000000 64 | 65 | # List the supported formats 66 | v4l2-ctl --list-formats -------------------------------------------------------------------------------- /scikit-learn/MLPClassifier_deploy.py: -------------------------------------------------------------------------------- 1 | from joblib import load 2 | from sklearn.preprocessing import StandardScaler 3 | import numpy as np 4 | 5 | # load the saved model and scaler 6 | model = load('mnist.model') 7 | scaler = load('mnist.scaler') 8 | 9 | # create a test sample (result should be 7) 10 | test_sample = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,74,249,254,254,254,245,167,167,136,25,80,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,254,254,254,254,254,254,254,254,249,254,252,197,113,71,39,0,0,0,0,0,0,0,0,0,0,0,0,5,99,135,105,105,114,192,192,192,233,254,254,254,254,254,246,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,45,114,114,203,254,254,254,240,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,35,155,254,254,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,254,241,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,254,254,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,243,254,240,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,254,254,139,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,243,254,244,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,176,254,254,113,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,140,254,254,220,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,88,253,254,243,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,63,241,254,254,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,243,254,254,147,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,111,254,254,203,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,58,254,254,254,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,237,254,255,194,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,254,254,194,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,230,193,28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] 11 | x = np.array([test_sample]) 12 | 13 | # compute the classification result 14 | result = int(model.predict(scaler.transform(x))) 15 | print("Single test sample result: " + str(result)) 16 | 17 | # display the digit using matplotlib 18 | import matplotlib.pyplot as plt 19 | img = x.reshape((28,28)) 20 | plt.imshow(img, cmap="Greys") 21 | plt.show() 22 | -------------------------------------------------------------------------------- /scikit-learn/MLPClassifier_train.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | from sklearn.neural_network import MLPClassifier 4 | from sklearn.metrics import accuracy_score 5 | import pandas as pd 6 | 7 | # load the input train/test datasets from CSV 8 | train_data = pd.read_csv("mnist_train.csv") 9 | test_data = pd.read_csv("mnist_test.csv") 10 | 11 | # get the input parameters of the samples (everything but the first column in the MNIST dataset) 12 | X_train = train_data.drop(train_data.columns[0], axis=1) 13 | X_test = test_data.drop(test_data.columns[0], axis=1) 14 | 15 | # get the classification labels of the samples (the first column in the MNIST dataset) 16 | y_train = train_data.iloc[:, 0] 17 | y_test = test_data.iloc[:, 0] 18 | 19 | # # alternatively, split a single data set into test / training sets 20 | # from sklearn.model_selection import train_test_split 21 | # X_train, X_test, y_train, y_test = train_test_split(X_train, y_train, test_size= 0.25, shuffle=True, random_state=1) 22 | 23 | # print for debugging purposes 24 | print("train_data") 25 | print(train_data.head(5)) 26 | print("test_data") 27 | print(test_data.head(5)) 28 | print("X_train") 29 | print(X_train.head(5)) 30 | print("X_test") 31 | print(X_test.head(5)) 32 | print("y_train") 33 | print(y_train.head(5)) 34 | print("y_test") 35 | print(y_test.head(5)) 36 | 37 | # scale the training and testing data 38 | from sklearn.preprocessing import StandardScaler 39 | scaler = StandardScaler() 40 | scaler.fit(X_train.values) 41 | X_train = scaler.transform(X_train.values) 42 | X_test = scaler.transform(X_test.values) 43 | 44 | # perform the training 45 | model = MLPClassifier(hidden_layer_sizes=(20, 10), max_iter=5000, alpha=0.0001, solver='lbfgs', verbose=10, random_state=1) 46 | model.fit(X_train, y_train) 47 | 48 | # compute testing results 49 | y_pred = model.predict(X_test) 50 | accuracy = accuracy_score(y_test, y_pred) 51 | 52 | # print results for debugging 53 | print("TRAINING SAMPLES: " + str(len(X_train))) 54 | print("TESTING SAMPLES: " + str(len(X_test))) 55 | print("TESTING ACCURACY: " + str(accuracy)) 56 | 57 | # save the model and scaler 58 | from joblib import dump 59 | dump(model, 'mnist.model') 60 | dump(scaler, 'mnist.scaler') 61 | -------------------------------------------------------------------------------- /scikit-learn/README.md: -------------------------------------------------------------------------------- 1 | scikit-learn examples 2 | ======== 3 | 4 | Machine learning examples using scikit-learn. 5 | 6 | MNIST in CSV dataset located here: https://pjreddie.com/projects/mnist-in-csv/ 7 | 8 | Download the following two files: 9 | https://pjreddie.com/media/files/mnist_train.csv 10 | https://pjreddie.com/media/files/mnist_test.csv 11 | 12 | MLPClassifier_train.py will train and test using the MNIST datasets. After the training and testing, scaler and model files will be exported for deployment use. 13 | 14 | MLPClassifier_deploy.py will load the previously saved scaler and model files, perform one classification operation with a single test sample, display results, and terminate. This file is intented to demonstrate how to deploy a trained model to a generic python application. 15 | 16 | -------------------------------------------------------------------------------- /sparkfun artemis/BLE_stepper/BLE_example.h: -------------------------------------------------------------------------------- 1 | #ifndef _BLE_EXAMPLE_H_ 2 | #define _BLE_EXAMPLE_H_ 3 | 4 | #include "Arduino.h" 5 | 6 | #define DEBUG 7 | #define SERIAL_PORT Serial 8 | 9 | #include 10 | #include 11 | 12 | #ifdef __cplusplus 13 | extern "C" 14 | { 15 | #endif 16 | 17 | #include "wsf_types.h" 18 | #include "wsf_trace.h" 19 | #include "wsf_buf.h" 20 | 21 | #include "hci_handler.h" 22 | #include "dm_handler.h" 23 | #include "l2c_handler.h" 24 | #include "att_handler.h" 25 | #include "smp_handler.h" 26 | #include "l2c_api.h" 27 | #include "att_api.h" 28 | #include "smp_api.h" 29 | #include "app_api.h" 30 | #include "hci_core.h" 31 | #include "hci_drv.h" 32 | #include "hci_drv_apollo.h" 33 | #include "hci_drv_apollo3.h" 34 | 35 | #include "am_mcu_apollo.h" 36 | #include "am_util.h" 37 | 38 | #include "nus_api.h" 39 | #include "app_ui.h" 40 | 41 | #include "wsf_msg.h" 42 | 43 | #ifdef __cplusplus 44 | } 45 | #endif 46 | 47 | 48 | //***************************************************************************** 49 | // 50 | // Forward declarations. 51 | // 52 | //***************************************************************************** 53 | void exactle_stack_init(void); 54 | void scheduler_timer_init(void); 55 | void update_scheduler_timers(void); 56 | void set_next_wakeup(void); 57 | void button_handler(wsfEventMask_t event, wsfMsgHdr_t *pMsg); 58 | extern void AppUiBtnTest(uint8_t btn); 59 | 60 | void setAdvName(const char* str); 61 | 62 | #endif // _BLE_EXAMPLE_H_ 63 | -------------------------------------------------------------------------------- /sparkfun artemis/BLE_stepper/BLE_stepper.ino: -------------------------------------------------------------------------------- 1 | /* 2 | Analog to digital conversion 3 | By: Owen Lyke 4 | SparkFun Electronics 5 | Date: Aug 27, 2019 6 | License: MIT. See license file for more information but you can 7 | basically do whatever you want with this code. 8 | 9 | This example demonstrates basic BLE server (peripheral) functionality for the Apollo3 boards. 10 | 11 | How to use this example: 12 | - Install the nRF Connect app on your mobile device (must support BLE bluetooth) 13 | - Make sure you select the correct board definition from Tools-->Board 14 | (it is used to determine which pin controls the LED) 15 | - Compile and upload the example to your board with the Arduino "Upload" button 16 | - In the nRF Connect app look for the device in the "scan" tab. 17 | (By default it is called "Artemis BLE" but you can change that below) 18 | - Once the device is found click "connect" 19 | - The GATT server will load with 5 services: 20 | - Generic Access 21 | - Generic Attribute 22 | - Link Loss 23 | - Immediate Alert 24 | - Tx Power 25 | - For this example we've hooked into the 'Immediate Alert' service. 26 | You can click on that pane and it will expand to show an "upload" button. 27 | Use the upload button to write one of three values (0x00, 0x01, or 0x02) 28 | - When you send '0x00' (aka 'No alert') the LED will be set to off 29 | - When you send either '0x01' or '0x02' the LED will be set to on 30 | */ 31 | #include "BLE_example.h" 32 | 33 | #define BLE_PERIPHERAL_NAME "Artemis BLE" // Up to 29 characters 34 | 35 | void setup() { 36 | 37 | #ifdef DEBUG 38 | SERIAL_PORT.begin(115200); 39 | delay(1000); 40 | SERIAL_PORT.printf("Apollo3 Arduino BLE Example. Compiled: %s\n", __TIME__); 41 | #endif 42 | 43 | pinMode(LED_BUILTIN, OUTPUT); 44 | set_led_low(); 45 | 46 | // 47 | // Configure the peripheral's advertised name: 48 | setAdvName(BLE_PERIPHERAL_NAME); 49 | 50 | // 51 | // Boot the radio. 52 | // 53 | HciDrvRadioBoot(0); 54 | 55 | // 56 | // Initialize the main ExactLE stack. 57 | // 58 | exactle_stack_init(); 59 | 60 | // 61 | // Start the "Nus" profile. 62 | // 63 | NusStart(); 64 | } 65 | 66 | void loop() { 67 | 68 | // 69 | // Calculate the elapsed time from our free-running timer, and update 70 | // the software timers in the WSF scheduler. 71 | // 72 | update_scheduler_timers(); 73 | wsfOsDispatcher(); 74 | 75 | // 76 | // Enable an interrupt to wake us up next time we have a scheduled event. 77 | // 78 | set_next_wakeup(); 79 | 80 | am_hal_interrupt_master_disable(); 81 | 82 | // 83 | // Check to see if the WSF routines are ready to go to sleep. 84 | // 85 | if ( wsfOsReadyToSleep() ) 86 | { 87 | am_hal_sysctrl_sleep(AM_HAL_SYSCTRL_SLEEP_DEEP); 88 | } 89 | am_hal_interrupt_master_enable(); 90 | } 91 | -------------------------------------------------------------------------------- /sparkfun artemis/BLE_stepper/nus_api.h: -------------------------------------------------------------------------------- 1 | /*************************************************************************************************/ 2 | /*! 3 | * \file tag_api.h 4 | * 5 | * \brief Tag sample application interface. 6 | * 7 | * $Date: 2016-12-28 16:12:14 -0600 (Wed, 28 Dec 2016) $ 8 | * $Revision: 10805 $ 9 | * 10 | * Copyright (c) 2011-2017 ARM Ltd., all rights reserved. 11 | * ARM Ltd. confidential and proprietary. 12 | * 13 | * IMPORTANT. Your use of this file is governed by a Software License Agreement 14 | * ("Agreement") that must be accepted in order to download or otherwise receive a 15 | * copy of this file. You may not use or copy this file for any purpose other than 16 | * as described in the Agreement. If you do not agree to all of the terms of the 17 | * Agreement do not use this file and delete all copies in your possession or control; 18 | * if you do not have a copy of the Agreement, you must contact ARM Ltd. prior 19 | * to any use, copying or further distribution of this software. 20 | */ 21 | /*************************************************************************************************/ 22 | #ifndef TAG_API_H 23 | #define TAG_API_H 24 | 25 | #include "wsf_os.h" 26 | 27 | extern void debug_print(const char* f, const char* F, uint16_t L); 28 | extern void debug_printf(char* fmt, ...); 29 | extern void set_led_high( void ); 30 | extern void set_led_low( void ); 31 | extern void set_stepper_command(uint8_t cmd); 32 | 33 | #ifdef __cplusplus 34 | extern "C" { 35 | #endif 36 | 37 | /************************************************************************************************** 38 | Function Declarations 39 | **************************************************************************************************/ 40 | /*************************************************************************************************/ 41 | /*! 42 | * \fn TagStart 43 | * 44 | * \brief Start the proximity profile reporter application. 45 | * 46 | * \return None. 47 | */ 48 | /*************************************************************************************************/ 49 | void NusStart(void); 50 | 51 | /*************************************************************************************************/ 52 | /*! 53 | * \fn NusHandlerInit 54 | * 55 | * \brief Proximity reporter handler init function called during system initialization. 56 | * 57 | * \param handlerID WSF handler ID for App. 58 | * 59 | * \return None. 60 | */ 61 | /*************************************************************************************************/ 62 | void NusHandlerInit(wsfHandlerId_t handlerId); 63 | 64 | 65 | /*************************************************************************************************/ 66 | /*! 67 | * \fn NusHandler 68 | * 69 | * \brief WSF event handler for proximity reporter. 70 | * 71 | * \param event WSF event mask. 72 | * \param pMsg WSF message. 73 | * 74 | * \return None. 75 | */ 76 | /*************************************************************************************************/ 77 | void NusHandler(wsfEventMask_t event, wsfMsgHdr_t *pMsg); 78 | 79 | #ifdef __cplusplus 80 | }; 81 | #endif 82 | 83 | #endif /* TAG_API_H */ 84 | -------------------------------------------------------------------------------- /sparkfun artemis/ULN2003/ULN2003.ino: -------------------------------------------------------------------------------- 1 | // include AccelStepper library 2 | #include 3 | 4 | // define motor controller pins 5 | #define motorPin1 9 // IN1 on the ULN2003 driver 6 | #define motorPin2 10 // IN2 on the ULN2003 driver 7 | #define motorPin3 11 // IN3 on the ULN2003 driver 8 | #define motorPin4 12 // IN4 on the ULN2003 driver 9 | 10 | // define the AccelStepper interface type; 4 wire motor in half step mode: 11 | #define MotorInterfaceType 8 12 | 13 | // initialize with pin sequence IN1-IN3-IN2-IN4 for using the AccelStepper library with 28BYJ-48 stepper motor: 14 | AccelStepper stepper = AccelStepper(MotorInterfaceType, motorPin1, motorPin3, motorPin2, motorPin4); 15 | void setup() { 16 | // set the motor speed / acceleration values 17 | stepper.setMaxSpeed(1000); 18 | stepper.setAcceleration(200); 19 | } 20 | 21 | void loop() { 22 | // Set the current position to 0: 23 | stepper.setCurrentPosition(0); 24 | 25 | while (true) 26 | { 27 | // move the motor in the forward direction until desired position is reached 28 | stepper.moveTo(4096); 29 | stepper.runToPosition(); 30 | 31 | // pause for 1 second 32 | delay(1000); 33 | 34 | // move the motor in the reverse direction until the initial position is reached 35 | stepper.moveTo(0); 36 | stepper.runToPosition(); 37 | 38 | // pause for 1 second 39 | delay(1000); 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_accelstepper_demo/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows.Forms; 5 | 6 | namespace teensy_serial_demo 7 | { 8 | static class Program 9 | { 10 | /// 11 | /// The main entry point for the application. 12 | /// 13 | [STAThread] 14 | static void Main() 15 | { 16 | Application.EnableVisualStyles(); 17 | Application.SetCompatibleTextRenderingDefault(false); 18 | Application.Run(new Form1()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_accelstepper_demo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("teensy_serial_demo")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Microsoft")] 12 | [assembly: AssemblyProduct("teensy_serial_demo")] 13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("8a8e10af-1c15-4e82-b0e6-85bd47aec93b")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_accelstepper_demo/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace teensy_serial_demo.Properties 12 | { 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("teensy_serial_demo.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_accelstepper_demo/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace teensy_serial_demo.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_accelstepper_demo/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_accelstepper_demo/teensy_accelstepper_demo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 8.0.30703 7 | 2.0 8 | {6B6A2E90-E247-4682-9A5A-8202C97DA0A9} 9 | WinExe 10 | Properties 11 | teensy_serial_demo 12 | teensy_serial_demo 13 | v4.0 14 | Client 15 | 512 16 | 17 | 18 | x86 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | 27 | 28 | x86 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | Form 51 | 52 | 53 | Form1.cs 54 | 55 | 56 | 57 | 58 | Form1.cs 59 | 60 | 61 | ResXFileCodeGenerator 62 | Resources.Designer.cs 63 | Designer 64 | 65 | 66 | True 67 | Resources.resx 68 | 69 | 70 | SettingsSingleFileGenerator 71 | Settings.Designer.cs 72 | 73 | 74 | True 75 | Settings.settings 76 | True 77 | 78 | 79 | 80 | 87 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_demo.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Express 2013 for Windows Desktop 4 | VisualStudioVersion = 12.0.31101.0 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "teensy_serial_demo", "teensy_serial_demo\teensy_serial_demo.csproj", "{A06D460C-EA1B-4453-8FFD-BE7F2AE4E7F8}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "teensy_servo_demo", "teensy_servo_demo\teensy_servo_demo.csproj", "{9FA42E2C-777E-4B83-976F-204335D2FE58}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "teensy_stepper_demo", "teensy_stepper_demo\teensy_stepper_demo.csproj", "{E7EC4555-F8BA-4724-8190-6850789365C1}" 11 | EndProject 12 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "teensy_accelstepper_demo", "teensy_accelstepper_demo\teensy_accelstepper_demo.csproj", "{6B6A2E90-E247-4682-9A5A-8202C97DA0A9}" 13 | EndProject 14 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "teensy_hbridge_demo", "teensy_hbridge_demo\teensy_hbridge_demo.csproj", "{44D95BF2-DB19-4359-ADF2-63355970C975}" 15 | EndProject 16 | Global 17 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 18 | Debug|x86 = Debug|x86 19 | Release|x86 = Release|x86 20 | EndGlobalSection 21 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 22 | {A06D460C-EA1B-4453-8FFD-BE7F2AE4E7F8}.Debug|x86.ActiveCfg = Debug|x86 23 | {A06D460C-EA1B-4453-8FFD-BE7F2AE4E7F8}.Debug|x86.Build.0 = Debug|x86 24 | {A06D460C-EA1B-4453-8FFD-BE7F2AE4E7F8}.Release|x86.ActiveCfg = Release|x86 25 | {A06D460C-EA1B-4453-8FFD-BE7F2AE4E7F8}.Release|x86.Build.0 = Release|x86 26 | {9FA42E2C-777E-4B83-976F-204335D2FE58}.Debug|x86.ActiveCfg = Debug|x86 27 | {9FA42E2C-777E-4B83-976F-204335D2FE58}.Debug|x86.Build.0 = Debug|x86 28 | {9FA42E2C-777E-4B83-976F-204335D2FE58}.Release|x86.ActiveCfg = Release|x86 29 | {9FA42E2C-777E-4B83-976F-204335D2FE58}.Release|x86.Build.0 = Release|x86 30 | {E7EC4555-F8BA-4724-8190-6850789365C1}.Debug|x86.ActiveCfg = Debug|x86 31 | {E7EC4555-F8BA-4724-8190-6850789365C1}.Debug|x86.Build.0 = Debug|x86 32 | {E7EC4555-F8BA-4724-8190-6850789365C1}.Release|x86.ActiveCfg = Release|x86 33 | {E7EC4555-F8BA-4724-8190-6850789365C1}.Release|x86.Build.0 = Release|x86 34 | {6B6A2E90-E247-4682-9A5A-8202C97DA0A9}.Debug|x86.ActiveCfg = Debug|x86 35 | {6B6A2E90-E247-4682-9A5A-8202C97DA0A9}.Debug|x86.Build.0 = Debug|x86 36 | {6B6A2E90-E247-4682-9A5A-8202C97DA0A9}.Release|x86.ActiveCfg = Release|x86 37 | {6B6A2E90-E247-4682-9A5A-8202C97DA0A9}.Release|x86.Build.0 = Release|x86 38 | {44D95BF2-DB19-4359-ADF2-63355970C975}.Debug|x86.ActiveCfg = Debug|x86 39 | {44D95BF2-DB19-4359-ADF2-63355970C975}.Debug|x86.Build.0 = Debug|x86 40 | {44D95BF2-DB19-4359-ADF2-63355970C975}.Release|x86.ActiveCfg = Release|x86 41 | {44D95BF2-DB19-4359-ADF2-63355970C975}.Release|x86.Build.0 = Release|x86 42 | EndGlobalSection 43 | GlobalSection(SolutionProperties) = preSolution 44 | HideSolutionNode = FALSE 45 | EndGlobalSection 46 | EndGlobal 47 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_demo.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/teensy_demo/demo applications/teensy_demo.suo -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_demo.v12.suo: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/teensy_demo/demo applications/teensy_demo.v12.suo -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_hbridge_demo/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows.Forms; 5 | 6 | namespace teensy_serial_demo 7 | { 8 | static class Program 9 | { 10 | /// 11 | /// The main entry point for the application. 12 | /// 13 | [STAThread] 14 | static void Main() 15 | { 16 | Application.EnableVisualStyles(); 17 | Application.SetCompatibleTextRenderingDefault(false); 18 | Application.Run(new Form1()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_hbridge_demo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("teensy_serial_demo")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Microsoft")] 12 | [assembly: AssemblyProduct("teensy_serial_demo")] 13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("8a8e10af-1c15-4e82-b0e6-85bd47aec93b")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_hbridge_demo/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace teensy_serial_demo.Properties 12 | { 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("teensy_serial_demo.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_hbridge_demo/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace teensy_serial_demo.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_hbridge_demo/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_hbridge_demo/teensy_hbridge_demo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 8.0.30703 7 | 2.0 8 | {44D95BF2-DB19-4359-ADF2-63355970C975} 9 | WinExe 10 | Properties 11 | teensy_serial_demo 12 | teensy_serial_demo 13 | v4.0 14 | Client 15 | 512 16 | 17 | 18 | x86 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | 27 | 28 | x86 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | Form 51 | 52 | 53 | Form1.cs 54 | 55 | 56 | 57 | 58 | Form1.cs 59 | 60 | 61 | ResXFileCodeGenerator 62 | Resources.Designer.cs 63 | Designer 64 | 65 | 66 | True 67 | Resources.resx 68 | 69 | 70 | SettingsSingleFileGenerator 71 | Settings.Designer.cs 72 | 73 | 74 | True 75 | Settings.settings 76 | True 77 | 78 | 79 | 80 | 87 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_serial_demo/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows.Forms; 5 | 6 | namespace teensy_serial_demo 7 | { 8 | static class Program 9 | { 10 | /// 11 | /// The main entry point for the application. 12 | /// 13 | [STAThread] 14 | static void Main() 15 | { 16 | Application.EnableVisualStyles(); 17 | Application.SetCompatibleTextRenderingDefault(false); 18 | Application.Run(new Form1()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_serial_demo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("teensy_serial_demo")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Microsoft")] 12 | [assembly: AssemblyProduct("teensy_serial_demo")] 13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("8a8e10af-1c15-4e82-b0e6-85bd47aec93b")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_serial_demo/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace teensy_serial_demo.Properties 12 | { 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("teensy_serial_demo.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_serial_demo/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace teensy_serial_demo.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_serial_demo/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_serial_demo/teensy_serial_demo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 8.0.30703 7 | 2.0 8 | {A06D460C-EA1B-4453-8FFD-BE7F2AE4E7F8} 9 | WinExe 10 | Properties 11 | teensy_serial_demo 12 | teensy_serial_demo 13 | v4.0 14 | Client 15 | 512 16 | 17 | 18 | x86 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | 27 | 28 | x86 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | Form 51 | 52 | 53 | Form1.cs 54 | 55 | 56 | 57 | 58 | Form1.cs 59 | 60 | 61 | ResXFileCodeGenerator 62 | Resources.Designer.cs 63 | Designer 64 | 65 | 66 | True 67 | Resources.resx 68 | 69 | 70 | SettingsSingleFileGenerator 71 | Settings.Designer.cs 72 | 73 | 74 | True 75 | Settings.settings 76 | True 77 | 78 | 79 | 80 | 87 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_servo_demo/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows.Forms; 5 | 6 | namespace teensy_serial_demo 7 | { 8 | static class Program 9 | { 10 | /// 11 | /// The main entry point for the application. 12 | /// 13 | [STAThread] 14 | static void Main() 15 | { 16 | Application.EnableVisualStyles(); 17 | Application.SetCompatibleTextRenderingDefault(false); 18 | Application.Run(new Form1()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_servo_demo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("teensy_serial_demo")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Microsoft")] 12 | [assembly: AssemblyProduct("teensy_serial_demo")] 13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("8a8e10af-1c15-4e82-b0e6-85bd47aec93b")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_servo_demo/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace teensy_serial_demo.Properties 12 | { 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("teensy_serial_demo.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_servo_demo/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace teensy_serial_demo.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_servo_demo/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_servo_demo/teensy_servo_demo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 8.0.30703 7 | 2.0 8 | {9FA42E2C-777E-4B83-976F-204335D2FE58} 9 | WinExe 10 | Properties 11 | teensy_serial_demo 12 | teensy_serial_demo 13 | v4.0 14 | Client 15 | 512 16 | 17 | 18 | x86 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | 27 | 28 | x86 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | Form 51 | 52 | 53 | Form1.cs 54 | 55 | 56 | 57 | 58 | Form1.cs 59 | 60 | 61 | ResXFileCodeGenerator 62 | Resources.Designer.cs 63 | Designer 64 | 65 | 66 | True 67 | Resources.resx 68 | 69 | 70 | SettingsSingleFileGenerator 71 | Settings.Designer.cs 72 | 73 | 74 | True 75 | Settings.settings 76 | True 77 | 78 | 79 | 80 | 87 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_stepper_demo/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using System.Collections.Generic; 3 | using System.Linq; 4 | using System.Windows.Forms; 5 | 6 | namespace teensy_serial_demo 7 | { 8 | static class Program 9 | { 10 | /// 11 | /// The main entry point for the application. 12 | /// 13 | [STAThread] 14 | static void Main() 15 | { 16 | Application.EnableVisualStyles(); 17 | Application.SetCompatibleTextRenderingDefault(false); 18 | Application.Run(new Form1()); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_stepper_demo/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | using System.Runtime.InteropServices; 4 | 5 | // General Information about an assembly is controlled through the following 6 | // set of attributes. Change these attribute values to modify the information 7 | // associated with an assembly. 8 | [assembly: AssemblyTitle("teensy_serial_demo")] 9 | [assembly: AssemblyDescription("")] 10 | [assembly: AssemblyConfiguration("")] 11 | [assembly: AssemblyCompany("Microsoft")] 12 | [assembly: AssemblyProduct("teensy_serial_demo")] 13 | [assembly: AssemblyCopyright("Copyright © Microsoft 2014")] 14 | [assembly: AssemblyTrademark("")] 15 | [assembly: AssemblyCulture("")] 16 | 17 | // Setting ComVisible to false makes the types in this assembly not visible 18 | // to COM components. If you need to access a type in this assembly from 19 | // COM, set the ComVisible attribute to true on that type. 20 | [assembly: ComVisible(false)] 21 | 22 | // The following GUID is for the ID of the typelib if this project is exposed to COM 23 | [assembly: Guid("8a8e10af-1c15-4e82-b0e6-85bd47aec93b")] 24 | 25 | // Version information for an assembly consists of the following four values: 26 | // 27 | // Major Version 28 | // Minor Version 29 | // Build Number 30 | // Revision 31 | // 32 | // You can specify all the values or you can default the Build and Revision Numbers 33 | // by using the '*' as shown below: 34 | // [assembly: AssemblyVersion("1.0.*")] 35 | [assembly: AssemblyVersion("1.0.0.0")] 36 | [assembly: AssemblyFileVersion("1.0.0.0")] 37 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_stepper_demo/Properties/Resources.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace teensy_serial_demo.Properties 12 | { 13 | 14 | 15 | /// 16 | /// A strongly-typed resource class, for looking up localized strings, etc. 17 | /// 18 | // This class was auto-generated by the StronglyTypedResourceBuilder 19 | // class via a tool like ResGen or Visual Studio. 20 | // To add or remove a member, edit your .ResX file then rerun ResGen 21 | // with the /str option, or rebuild your VS project. 22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] 23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] 24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 25 | internal class Resources 26 | { 27 | 28 | private static global::System.Resources.ResourceManager resourceMan; 29 | 30 | private static global::System.Globalization.CultureInfo resourceCulture; 31 | 32 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] 33 | internal Resources() 34 | { 35 | } 36 | 37 | /// 38 | /// Returns the cached ResourceManager instance used by this class. 39 | /// 40 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 41 | internal static global::System.Resources.ResourceManager ResourceManager 42 | { 43 | get 44 | { 45 | if ((resourceMan == null)) 46 | { 47 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("teensy_serial_demo.Properties.Resources", typeof(Resources).Assembly); 48 | resourceMan = temp; 49 | } 50 | return resourceMan; 51 | } 52 | } 53 | 54 | /// 55 | /// Overrides the current thread's CurrentUICulture property for all 56 | /// resource lookups using this strongly typed resource class. 57 | /// 58 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] 59 | internal static global::System.Globalization.CultureInfo Culture 60 | { 61 | get 62 | { 63 | return resourceCulture; 64 | } 65 | set 66 | { 67 | resourceCulture = value; 68 | } 69 | } 70 | } 71 | } 72 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_stepper_demo/Properties/Settings.Designer.cs: -------------------------------------------------------------------------------- 1 | //------------------------------------------------------------------------------ 2 | // 3 | // This code was generated by a tool. 4 | // Runtime Version:4.0.30319.18444 5 | // 6 | // Changes to this file may cause incorrect behavior and will be lost if 7 | // the code is regenerated. 8 | // 9 | //------------------------------------------------------------------------------ 10 | 11 | namespace teensy_serial_demo.Properties 12 | { 13 | 14 | 15 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] 16 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")] 17 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 18 | { 19 | 20 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); 21 | 22 | public static Settings Default 23 | { 24 | get 25 | { 26 | return defaultInstance; 27 | } 28 | } 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_stepper_demo/Properties/Settings.settings: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_stepper_demo/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cmcmurrough/cse4316/623f0b2ecd264e4a3d1e9ec6a06bddb1792593a5/teensy_demo/demo applications/teensy_stepper_demo/obj/x86/Release/DesignTimeResolveAssemblyReferencesInput.cache -------------------------------------------------------------------------------- /teensy_demo/demo applications/teensy_stepper_demo/teensy_stepper_demo.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Debug 5 | x86 6 | 8.0.30703 7 | 2.0 8 | {E7EC4555-F8BA-4724-8190-6850789365C1} 9 | WinExe 10 | Properties 11 | teensy_serial_demo 12 | teensy_serial_demo 13 | v4.0 14 | Client 15 | 512 16 | 17 | 18 | x86 19 | true 20 | full 21 | false 22 | bin\Debug\ 23 | DEBUG;TRACE 24 | prompt 25 | 4 26 | 27 | 28 | x86 29 | pdbonly 30 | true 31 | bin\Release\ 32 | TRACE 33 | prompt 34 | 4 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | Form 51 | 52 | 53 | Form1.cs 54 | 55 | 56 | 57 | 58 | Form1.cs 59 | 60 | 61 | ResXFileCodeGenerator 62 | Resources.Designer.cs 63 | Designer 64 | 65 | 66 | True 67 | Resources.resx 68 | 69 | 70 | SettingsSingleFileGenerator 71 | Settings.Designer.cs 72 | 73 | 74 | True 75 | Settings.settings 76 | True 77 | 78 | 79 | 80 | 87 | -------------------------------------------------------------------------------- /teensy_demo/firmware/iHSS57/iHSS57.ino: -------------------------------------------------------------------------------- 1 | /*********************************************************************************************************************** 2 | * @FILE iHSS57.ino 3 | * @BRIEF An example Arduino sketch for controlling the iHSS57 closed loop stepper 4 | * @AUTHOR Christopher D. McMurrough 5 | **********************************************************************************************************************/ 6 | 7 | // inlcude necessary header files 8 | #include 9 | 10 | // define GPIO pins 11 | const int LED_PIN = 13; 12 | const int LED_ON = HIGH; 13 | const int LED_OFF = LOW; 14 | const int STEPPER_ENABLED = HIGH; 15 | const int STEPPER_DISABLED = LOW; 16 | const int STEPPER_COMMON_PIN = 19; 17 | const int STEPPER_1_STEP_PIN = 21; 18 | const int STEPPER_1_DIR_PIN = 20; 19 | const int STEPPER_1_ENABLE_PIN = 23; 20 | 21 | AccelStepper Stepper_1(1, STEPPER_1_STEP_PIN, STEPPER_1_DIR_PIN); 22 | 23 | void setup() 24 | { 25 | // initialize the LED 26 | pinMode(LED_PIN, OUTPUT); 27 | digitalWrite(LED_PIN, LED_OFF); 28 | 29 | // flash the LED 30 | for (int i = 0; i < 25; i++) 31 | { 32 | digitalWrite(LED_PIN, LED_ON); 33 | delay(50); 34 | digitalWrite(LED_PIN, LED_OFF); 35 | delay(50); 36 | } 37 | 38 | // initialize the motor 39 | pinMode(STEPPER_COMMON_PIN, OUTPUT); 40 | digitalWrite(STEPPER_COMMON_PIN, HIGH); 41 | 42 | // enable the motor 43 | Stepper_1.enableOutputs(); 44 | 45 | // set the speed command 46 | Stepper_1.setMaxSpeed(50000); 47 | Stepper_1.setSpeed(1000); 48 | } 49 | 50 | void loop() 51 | { 52 | Stepper_1.runSpeed(); 53 | } 54 | -------------------------------------------------------------------------------- /zmq demo/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | project (zeromq_example) 2 | cmake_minimum_required(VERSION 2.8) 3 | 4 | # configure ZeroMQ 5 | IF(WIN32) 6 | # set the zeromq directories manually 7 | message("Windows platform detected, setting ZeroMQ configuration manually...") 8 | set(ZeroMQ_ROOT_DIR "C:/Program Files/ZeroMQ 4.0.4") 9 | set(ZeroMQ_INCLUDE_DIR ${ZeroMQ_ROOT_DIR}/include) 10 | set(ZeroMQ_LIB_DIR ${ZeroMQ_ROOT_DIR}/lib) 11 | 12 | # set the include and link directories 13 | include_directories(${ZeroMQ_INCLUDE_DIR}) 14 | link_directories(${ZeroMQ_LIB_DIR}) 15 | 16 | # find all of the libs in ZEROMQ_LIB_DIR 17 | file(GLOB ZeroMQ_LIBS RELATIVE ${ZeroMQ_LIB_DIR} ${ZeroMQ_LIB_DIR}/*.lib) 18 | message("Found ZeroMQ libs...") 19 | message(${ZeroMQ_LIBS}) 20 | ELSE(WIN32) 21 | #find_package (ZeroMQ REQUIRED) 22 | #set(ZeroMQ_LIBS ${ZeroMQ_LIBRARIES}) 23 | 24 | # set the zeromq directories 25 | message("Linux platform detected, setting ZeroMQ configuration manually...") 26 | find_path(ZeroMQ_ROOT_DIR NAMES include/zmq.h) 27 | find_library(ZeroMQ_LIBS NAMES zmq libzmq HINTS ${ZeroMQ_ROOT_DIR}/lib) 28 | find_path(ZeroMQ_INCLUDE_DIR NAMES zmq.h HINTS ${ZeroMQ_ROOT_DIR}/include) 29 | 30 | # set the include and link directories 31 | include_directories(${ZeroMQ_INCLUDE_DIR}) 32 | link_directories(${ZeroMQ_LIB_DIR}) 33 | ENDIF(WIN32) 34 | 35 | # configure OpenCV 36 | IF(WIN32) 37 | # set the opencv directories manually 38 | message("Windows platform detected, setting OpenCV configuration manually...") 39 | set(OPENCV_ROOT_DIR "C:/OpenCV") 40 | set(OPENCV_BUILD_DIR ${OPENCV_ROOT_DIR}/build/x64/vc12) 41 | set(OPENCV_INCLUDE_DIRS ${OPENCV_ROOT_DIR}/build/include; ${OPENCV_ROOT_DIR}/build/include/opencv; ${OPENCV_ROOT_DIR}/build/include/opencv2) 42 | set(OPENCV_LIB_DIRS ${OPENCV_BUILD_DIR}/lib) 43 | 44 | # set the include and link directories 45 | include_directories(${OPENCV_INCLUDE_DIRS}) 46 | link_directories(${OPENCV_LIB_DIRS}) 47 | 48 | # find all of the libs in OPENCV_LIB_DIRS 49 | file(GLOB OpenCV_LIBS RELATIVE ${OPENCV_LIB_DIRS} ${OPENCV_LIB_DIRS}/*.lib) 50 | message("Found OpenCV libs...") 51 | message(${OpenCV_LIBS}) 52 | ELSE(WIN32) 53 | find_package (OpenCV REQUIRED) 54 | ENDIF(WIN32) 55 | 56 | # create individual projects 57 | add_executable (zmq_cv_request zmq_cv_request.cpp) 58 | target_link_libraries(zmq_cv_request ${ZeroMQ_LIBS} ${OpenCV_LIBS}) 59 | 60 | add_executable (zmq_cv_server zmq_cv_server.cpp) 61 | target_link_libraries(zmq_cv_server ${ZeroMQ_LIBS} ${OpenCV_LIBS}) 62 | -------------------------------------------------------------------------------- /zmq demo/zmq_cv_request.cpp: -------------------------------------------------------------------------------- 1 | // 2 | // Copyright 2014 Christopher D. McMurrough 3 | // 4 | // This program is free software: you can redistribute it and/or modify 5 | // it under the terms of the GNU General Public License as published by 6 | // the Free Software Foundation, either version 3 of the License, or 7 | // (at your option) any later version. 8 | // 9 | // This program is distributed in the hope that it will be useful, 10 | // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | // GNU General Public License for more details. 13 | // 14 | // You should have received a copy of the GNU General Public License 15 | // along with this program. If not, see . 16 | // 17 | 18 | /*******************************************************************************************************************//** 19 | * @file zmq_cv_request.cpp 20 | * @brief C++ example for receiving OpenCV image frames via a zmq request / response scheme. 21 | * @author Christopher D. McMurrough 22 | ***********************************************************************************************************************/ 23 | 24 | #include 25 | #include 26 | #include 27 | #include "opencv2/opencv.hpp" 28 | 29 | // configuration parameters 30 | #define NUM_COMNMAND_LINE_ARGUMENTS 1 31 | #define DISPLAY_WINDOW_NAME "Received Image" 32 | 33 | /*******************************************************************************************************************//** 34 | * @brief program entry point 35 | * @param[in] argc number of command line arguments 36 | * @param[in] argv string array of command line arguments 37 | * @return return code (0 for normal termination) 38 | * @author Christoper D. McMurrough 39 | ***********************************************************************************************************************/ 40 | int main(int argc, char **argv) 41 | { 42 | // store display parameters 43 | bool showFrames = false; 44 | 45 | // validate and parse the command line arguments 46 | if(argc != NUM_COMNMAND_LINE_ARGUMENTS + 1) 47 | { 48 | std::printf("USAGE: %s \n", argv[0]); 49 | std::printf("WARNING: Proceeding with default execution parameters... \n"); 50 | showFrames = true; 51 | } 52 | else 53 | { 54 | showFrames = atoi(argv[1]) > 0; 55 | } 56 | 57 | // initialize the zmq context and socket 58 | zmq::context_t context(1); 59 | zmq::socket_t socket(context, ZMQ_REQ); 60 | 61 | // connect to the image server 62 | std::printf("Connecting to server... \n"); 63 | socket.connect ("tcp://localhost:5555"); 64 | 65 | // create a request object 66 | zmq::message_t request(5); 67 | memcpy(request.data(), "Hello", 5); 68 | 69 | // request new frames until the user presses the 'q' key 70 | bool requestFrames = true; 71 | while(requestFrames) 72 | { 73 | // send the request 74 | std::printf("Sending request... \n"); 75 | socket.send(request); 76 | 77 | // get the reply 78 | zmq::message_t reply; 79 | socket.recv(&reply); 80 | std::vector buffer; 81 | std::printf("Received reply: %d bytes \n", static_cast(reply.size())); 82 | 83 | // store the reply data into an image structure 84 | cv::Mat image(480, 640, CV_8UC3, reply.data()); 85 | 86 | // display the result 87 | if(showFrames) 88 | { 89 | cv::imshow(DISPLAY_WINDOW_NAME, image); 90 | } 91 | 92 | // check for program termination 93 | if(((char)) cv::waitKey(1)) == 'q') 94 | { 95 | requestFrames = false; 96 | } 97 | } 98 | 99 | // release program resources before returning 100 | socket.close(); 101 | cv::destroyAllWindows(); 102 | return 0; 103 | } 104 | --------------------------------------------------------------------------------