{"id":16508575,"url":"https://github.com/osteele/processing_serialrecord","last_synced_at":"2026-04-28T13:38:52.349Z","repository":{"id":63270996,"uuid":"477427410","full_name":"osteele/Processing_SerialRecord","owner":"osteele","description":"A Processing library for sending and receiving multiple-value records on the serial port.","archived":false,"fork":false,"pushed_at":"2022-11-16T02:04:56.000Z","size":1522,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-02-25T09:18:40.280Z","etag":null,"topics":["processing","processing-","processing-library"],"latest_commit_sha":null,"homepage":"https://osteele.github.io/Processing_SerialRecord/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/osteele.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-04-03T18:18:05.000Z","updated_at":"2022-10-24T11:49:55.000Z","dependencies_parsed_at":"2022-11-16T03:51:14.335Z","dependency_job_id":null,"html_url":"https://github.com/osteele/Processing_SerialRecord","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osteele%2FProcessing_SerialRecord","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osteele%2FProcessing_SerialRecord/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osteele%2FProcessing_SerialRecord/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/osteele%2FProcessing_SerialRecord/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/osteele","download_url":"https://codeload.github.com/osteele/Processing_SerialRecord/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241460048,"owners_count":19966511,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["processing","processing-","processing-library"],"created_at":"2024-10-11T15:46:17.914Z","updated_at":"2026-04-28T13:38:47.326Z","avatar_url":"https://github.com/osteele.png","language":"Java","readme":"# Serial Record Library for Processing\n\nThe SerialRecord library for Processing sends and receive records, containing\nmultiple integers, over the serial port. It is intended for novice programmers:\nit is designed to be easy to use, to detect when it is used incorrectly, and to\ndetect and report when it receives invalid data. It also has an option to\ndisplay the data sent to the and received from the serial port on the canvas.\n\nThe library also provides a function,\n[`SerialUtils.findArduinoPort()`][findArduinoPort], that attempts to find the\nserial port that the Arduino is connected to. This can be used to write sketches\nthat do not need to be modified when they are run on another computer, or when\nthe Arduino is connected to another USB port. This function can be used\nindependently of the other functionality in this library.\n\nData is sent as comma-separated ASCII. This format is easy to view and interact\nwith in the Arduino Serial Monitor, and is compatible with the Arduino Serial\nPlotter.\n\nThe Library can be used with the [SerialRecord library for Arduino], but does\nnot require it.\n\n![](docs/screenshot.png \"Screenshot\" )\n\n[SerialRecord library for Arduino]: https://osteele.github.io/Arduino_SerialRecord/\n[findArduinoPort]: https://github.com/osteele/Processing_SerialRecord/wiki/Find-the-Arduino-Serial-Port\n\n## Design Goals\n\n- Easy for novice programmers to configure and use\n- Easy to inspect the transmitted data\n- Detects and provides diagnostics for common errors\n\n### Non-goals\n\n- Efficiency. The library uses an ASCII representation of numbers. This is easy\n  to visually inspect without tools, but it is computationally expensive to read\n  and write, and requires more bandwidth than a binary representation.\n- Flexibility. All records must have the same number of values; only integers\n  are supported. The first limitation make it possible to detect errors in code\n  that uses the library, but is not appropriate to all communications. If you\n  need more flexibility, this is not the library for you.\n\n## Features\n\n- Parses sequences of integers separated by comma (CSV), tab (TSV), or space.\n- Displays the most recent transmitted and received data on the canvas, as in\n  the screenshot above. ([See how to disable\n  this.](https://github.com/osteele/Processing_SerialRecord/wiki/Logging-Transmitted-and-Received-Data#controlling-the-display-of-transmitted-data-on-the-canvas).)\n- Can be configured to log transmitted and receive data to the console. ([See\n  how to enable\n  this.](https://github.com/osteele/Processing_SerialRecord/wiki/Logging-Transmitted-and-Received-Data#logging-transmitted-data-to-the-console).)\n- Received records that have too few or too many values result in the display of\n  a warning message on the console. This can help detect issues such a mismatch\n  between the number of values that the Arduino sketch sends, and the number\n  that the Processing sketch expects to receive.\n- When used with the [SerialRecord library for Arduino] library, sending a\n  different number of values than the code running on the Arduino expects,\n  results in a warning in the Processing console. This can help detect issues\n  such a mismatch between the number of values that the Processing sketch sends,\n  and the number that the Arduino expects to receive. (See [how this works, and\n  how to make use of it in your own\n  code](https://github.com/osteele/Processing_SerialRecord/wiki/Logging-Transmitted-and-Received-Data#what-is-logged).)\n- Recognizes field names in records, e.g. `pot1:100,pot2:200`. This is the\n  format recognized by the Arduino Serial Plotter.\n- Provides a [utility\n  method](https://github.com/osteele/Processing_SerialRecord/wiki/Find-the-Arduino-Serial-Port)\n  that can in some circumstances (usually, on macOS) discover the name of the\n  port that is used to communicate with the Arduino. This prevents someone\n  running a sketch on a different computer than it was developed on, or when the\n  Arduino is connected to a different USB port, from having to modify the source\n  code to their sketches.\n- When used with the [SerialRecord library for Arduino] library, a command can\n  be used to request that the Arduino send back the values that it received, for\n  debugging. This can be done once, or at periodic intervals.\n\n## Installation\n\nUse Processing's *Contribution Manager* to install this library:\n\n1. From the Processing IDE's *Tools* menu, select *Manage Tools…*.\n   ![](docs/manage-tools-menu-item.png)\n2. Select the *Libraries* tab.\n3. Search for \"serialrecord\".\n4. Click *Install*.\n\n![](docs/processing-library-manager.png)\n\n## Examples\n\nOnce the library has been installed, examples are available from the *File \u003e\nExamples* menu.\n\n![](docs/processing-examples.png)\n\nEach example is designed to pair with an example in the [SerialRecord library\nfor Arduino] library. However, the examples can also be used with other Arduino\nsketches (so long as those sketches are written to send or receive to expected\nnumber of values), or as a starting point for your own work.\n\nThe [Examples wiki\npage](https://github.com/osteele/Processing_SerialRecord/wiki/Examples)\ndescribes the examples, and suggests which example from the [SerialRecord\nlibrary for Arduino] is intended for use with each Processing example. (For\nexample, the Processing `SendSingleValue` sketch was designed to pair with the\nArduino `ReceiveSingleValue` sketch.)\n\n## Troubleshooting\n\nSome common problems and their solutions are described in the symptoms in\n[Troubleshooting](https://github.com/osteele/Processing_SerialRecord/wiki/Troubleshooting).\n\n## Code Recipes\n\nThe canvas display of the most-recently transmitted and received lines is\nhelpful during initial development, but at some point you may require a canvas\nthat contains only what your code explicitly draws there.\n\nThe [Code\nRecipes](https://github.com/osteele/Processing_SerialRecord/wiki/Code-Recipes)\nWiki page contains recipes to disable the feature where SerialRecord displays\ninformation on the canvas, and to log serial communication to the console\ninstead.\n\n## Alternatives\n\nIt is relatively easy to transmit data between the Arduino and Processing without a library.\n\n- [Firmata](https://github.com/firmata/arduino), which features declarative\n  binding of value positions to sensors or pin numbers.\n- [VSync Library](http://ernestum.github.io/VSync/) for the Arduino platform\n  \"magically\" synchronizes Arduino and Processing variables.\n\n## Acknowledgements\n\nThe idea of providing this code as a library was inspired by code provided to\nstudents by the NYU Shanghai IMA \"Interaction Lab\" course, for them to copy and\npaste into their sketches.\n\n## License\n\nCopyright (C) 2020-2022 Oliver Steele. This software is made available under the\nterms of the GNU LGPL License.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosteele%2Fprocessing_serialrecord","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fosteele%2Fprocessing_serialrecord","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fosteele%2Fprocessing_serialrecord/lists"}