NT-based operating systems provide a UDF-installable file system, similar to FAT and NTFS. This class driver provides the ability to read data sectors from a DVD-ROM drive. Support for the DVD-ROM command set, including commands for copyright protection and regionalization, is provided in Windows XP by an updated CD-ROM class driver. Vendors must supply either a DirectShow-compatible software decoder for each required DVD data stream, or provide a WDM streaming-compatible DVD decoder minidriver to support their DVD hardware decoders. What do you do with those extra timestamp(s)? It almost looks like they've been appended by whatever software is doing the logging, rather than being part of the actual message.Microsoft does not provide MPEG-2 or AC-3 software/hardware decoder filters with Windows XP. In other words, you'd copy the parser line here: | BANG DATA CSUM To handle the nonstandard lines you posted: would be necessary to add a new parse rule that accepts fields after the checksum, but aside from that it should go smoothly. Decoding the 50 binary subtypes of AIS messages 6 and 8 is presently in development. It handles combining of multipart messages, reads from streams, and supports a large of NMEA and AIS messages. It's based on the unofficial AIS spec at which is maintained by one of Kurt's colleagues. If you're in Ruby, I can recommend the NMEA and AIS decoder ruby gem that I wrote, available on github.
I did it by modifying the code a little bit: for line in file: Where message#5 should be passed as two lines. I pass messages from file to script line by line: for line in file:
I hope I explained this clearly so someone can let me know what I'm missing here. Where len(nmeamsg) is always 8 (second line) and unt('!SAVDM') is always 1 The error i get is in these lines: if unt('!SAVDM')=2 and len(nmeamsg)=13: So decoding fails because message#5 should contain two strings not one.
Nmeastring = string.join(nmeamsg,',')ĭbtimestring = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(float(nmeamsg)))ĭecoder can't bring the two lines as one. If nmeamsg != '!AIVDM' and nmeamsg != '!SAVDM': I succeed in decoding messages with one part. I tried to adjust my code to decode this new format. Now I'm getting a new format of the messages: the number at the last index is the time in epoch format
If unt('!AIVDM')=2 and len(nmeamsg)=13: # make sure there are two parts concatenated together one part (one message) or two parts (multi message). I used to decode AIS messages with theis package (Python) until I started getting a new format of the messages.Īs you may know, AIS messages come in two types mostly.