This focuses on generating the certificates for loading local virtual hosts hosted on your computer, for development only.
Do not use self-signed certificates in production ! For online certificates, use Let's Encrypt instead (tutorial).
This focuses on generating the certificates for loading local virtual hosts hosted on your computer, for development only.
Do not use self-signed certificates in production ! For online certificates, use Let's Encrypt instead (tutorial).
| <Project> | |
| <Import Project="Sdk.props" Sdk="Microsoft.NET.Sdk" /> | |
| <PropertyGroup> | |
| <TargetFramework>netstandard1.0</TargetFramework> | |
| <IsPackable>true</IsPackable> | |
| <IncludeBuildOutput>false</IncludeBuildOutput> | |
| <ContentTargetFolders>contentFiles</ContentTargetFolders> | |
| <DisableImplicitFrameworkReferences>true</DisableImplicitFrameworkReferences> |
The Brother PTP300BT label maker is intended to be controlled using the official Brother P-Touch Design & Print iOS/Android app. The app has arbitrary limits on what you can print (1 text object and up to 3 preset icons), so I thought it would be a fun challenge to reverse engineer the protocol to print whatever I wanted.
Python code at the bottom if you want to skip the fine details.
Intitially I had a quick peek at the Android APK to see if there was any useful information inside. The code that handles the communication with the printer in Print&Design turned out to be a native library, but the app clearly prepares a bitmap image and passes it to this native library for printing. Bitmaps are definitely something we can work with.
| Handlebars.registerHelper 'each_with_index', (array, fn) -> | |
| buffer = '' | |
| for i in array | |
| item = i | |
| item.index = _i | |
| buffer += fn(item) | |
| buffer |