Source: STMicro Launches the first 8-pin STM32 Microcontrollers
Category: General
Copperhill’s third-gen, $65 “PiCAN3” HAT features Raspberry Pi 4 support and a SocketCAN-ready CAN-Bus 2.0B port. The HAT has an RTC and is powered by a 3A, 6-20V Switch Mode Power Supply that can also power the Pi.
Source: CAN-Bus HAT for Raspberry Pi 4 offers RTC and wide-range power
In 2017, we (balena) embarked on a mission to build the ultimate flashing media. As a software company, we didn’t realize the hornet’s nest that we had stepped into. Little did we anticipate that in the process, we would end up re-examining the wheel at every step, going through eight
Source: Taming the ‘hard’ in hardware in 8 steps – a product development journey
With GitHub Package Registry your packages are at home with their code—sign up for the limited beta to try it out.
Source: Introducing GitHub Package Registry – The GitHub Blog
Beginning with Windows Insiders builds this Summer, we will include an in-house custom-built Linux kernel to underpin the newest version of the Windows Subsystem for Linux (WSL). This marks the first time that the Linux kernel will be included as a component in Windows.
Source: Shipping a Linux Kernel with Windows | Windows Command Line Tools For Developers
The Module Description file is a XML file that all VSCP devices must have and which describe the device. It can either be stored on the device itself or more common linked by the device and stored on some external server storage. Software that wants to configure a device can fetch this file to get the knowledge to do so. Typically a user interface use this file to guide a user through device configuration. A good thing is that one software can handle and configure any device.
A sample MDF file is here an here.
Read a mdf file from a device, parse it and display the module name. A device can consist of several modules, there will always be one and result.vscp.module[0] will always refer to the first. Most devices contains only one module. You can get the number of modules with result.vscp.module.length
Below are some Javascript examples on how to get information from the MDF-file.
Display the module name
const axios = require('axios');
const xml2js = require('xml2js');
let parser = new xml2js.Parser();
axios.get('https://www.eurosource.se/ntc10KA_3.xml')
.then((response) => {
parser.parseString(response.data,
(err, result) => {
console.dir(result.vscp.module[0].name);
});
})
.catch((err) => {
console.log(err);
});
Similar to above sample get a link to the manual for a device
console.log(result.vscp.module[0].manual[0].$.path);
List all registers with
console.dir(result.vscp.module[0].registers[0].reg);
Iterate through all registers an display there names
axios.get('https://www.eurosource.se/ntc10KA_3.xml')
.then((response) => {
parser.parseString(response.data, (err, result) => {
for (let reg of result.vscp.module[0].registers[0].reg) {
console.log(reg.name[0]._);
}
});
})
.catch((err) => {
console.log(err);
});
List register descriptions with
console.log(reg.description[0]._);
You get the language code for a register name or a register description with
console.log(reg.name[0].$.lang);
List abstractions with
axios.get('https://www.eurosource.se/ntc10KA_3.xml')
.then((response) => {
parser.parseString(response.data, (err, result) => {
for (let reg of result.vscp.module[0].registers[0].reg) {
console.dir(result.vscp.module[0].abstractions[0].abstraction);
}
});
})
.catch((err) => {
console.log(err);
});
List number of events the module can generate and the events
console.dir('# events: ' + result.vscp.module[0].events[0].event.length);
console.dir(result.vscp.module[0].events[0].event);
If you want an url to a picture of the module
console.log(result.vscp.module[0].picture[0].$.path);
If you want the manual
console.log(result.vscp.module[0].manual[0].$.path);
or a firmware image
console.log(result.vscp.module[0].firmware[0].$.path);
The number of firmware images available
axios.get('http://www.eurosource.se/paris_010.xml')
.then((response) => {
parser.parseString(response.data, (err, result) => {
console.log(result.vscp.module[0].firmware.length);
});
})
.catch((err) => {
console.log(err);
});
The release date for a specific firmware
console.log(result.vscp.module[0].firmware[3].$.date);
The way this works should be obvious by now. Enjoy!
11 DO-IT-YOURSELF PCB DESIGN FOR MANUFACTURE (DFM) CHECKS ANYONE CAN DO
Source: 11 Do-It-Yourself PCB Design For Manufacture (DFM) Checks Anyone Can Do | Seeed Studio Blog
Getting your PCB design manufactured is no easy feat.
Source: The Subtle Art Of Not Making Mistakes with PCB Design For Manufacturing | Seeed Studio Blog





