From bbb38e7d9b294ff35b3b7f97055fd2fc385e51a0 Mon Sep 17 00:00:00 2001 From: Daniel Rojas Date: Wed, 20 May 2020 19:12:20 +0200 Subject: [PATCH] Initial commit --- idea/example1.dot | 16 +++++++++ idea/example1.png | Bin 0 -> 43257 bytes idea/example1.wire | 32 ++++++++++++++++++ readme.md | 82 +++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 130 insertions(+) create mode 100644 idea/example1.dot create mode 100644 idea/example1.png create mode 100644 idea/example1.wire create mode 100644 readme.md diff --git a/idea/example1.dot b/idea/example1.dot new file mode 100644 index 0000000..7090c14 --- /dev/null +++ b/idea/example1.dot @@ -0,0 +1,16 @@ +digraph G { + graph [rankdir = LR, ranksep=2, fontname = "arial"]; + edge [arrowhead=none, fontname = "arial"]; + node [shape=record, style=rounded, fontname = "arial"]; + + X1[label="X1 | D-Sub DE-9 | female | {{DCD|RX|TX|DTR|GND|DSR|RTS|CTS|RI} | {1|2|3|4|5|6|7|8|9}} "]; + X2[label="X2 | Molex KK 254 6-pin | female | {{1|2|3|4|5|6} | {GND|RX|TX|NC|OUT|IN}}"]; + + W1[label="W1 | 3x 0,25 mm² shielded | 0.2 m | {{1|2|3|}|{WT|BN|GN|Shield}|{1|2|3|}}}"]; + + X1:p5 -> W1:w1i; W1:w1o -> X2:p1; + X1:p2 -> W1:w2i; W1:w2o -> X2:p3; + X1:p3 -> W1:w3i; W1:w3o -> X2:p2; + X1:p5 -> W1:wsi; + X2:p5:w -> X2:p6:w +} diff --git a/idea/example1.png b/idea/example1.png new file mode 100644 index 0000000000000000000000000000000000000000..a68056057d412ae8155b0525d7c57151af6c0ff7 GIT binary patch literal 43257 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 WM)vKAFZf$LdOP-Rf2?)n{Qn2C3Kc2< literal 0 HcmV?d00001 diff --git a/idea/example1.wire b/idea/example1.wire new file mode 100644 index 0000000..9a90895 --- /dev/null +++ b/idea/example1.wire @@ -0,0 +1,32 @@ +// define connectors + +X1[type="D-Sub DE-9", + subtype="female", + num_pins=9, + pin_labels="DCD|RX|TX|DTR|GND|DSR|RTS|CTS|RI", + position=L + ] + +X2[type="Molex KK 254 6-pin", + subtype="female", + num_pins=6, + pin_labels="GND|RX|TX|NC|OUT|IN", + position=R + ] + +// define wire + +W1[type="3x 0,25 mm² shielded", + length="0.2m", + num_wires=3, + colors="din47100", + shield=true + ] + +// define connections + +X1:5 -> W1:1 -> X2:1 // GND +X1:2 -> W1:2 -> X2:3 // TX-RX +X1:3 -> W1:3 -> X2:2 // RX-TX +X1:5 -> W1:S // shield +X2:5 -> X2:6 // loop diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..34f8d1b --- /dev/null +++ b/readme.md @@ -0,0 +1,82 @@ +# WireViz + +## Problem + +There is no easy way to document wires in projects. + +## Solution + +Create a GraphViz-based markup language and parser to quickly and easily document cables, wires and pinouts. + +## Requirements + +* Must be text based for easy version control +* Must be easy to use, yet flexible and extendable + +## Features + +* Auto-generate standard wire color schemes and allow custom ones + * DIN 47100 (WT/BN/GN/YE/GY/PK/BU/RD/BK/VT/...) + * IEC ??? (BN/RD/OR/YE/GN/BU/VT/GY/WT/BK/...) +* Allow more than one connector per side +* Include image with pinout of connector, if known + +## Example + +WireViz input file: + + // define connectors + + X1 [type="D-Sub DE-9", + subtype="female", + num_pins=9, + pin_labels="DCD|RX|TX|DTR|GND|DSR|RTS|CTS|RI", + position=L + ] + + X2 [type="Molex KK 254 6-pin", + subtype="female", + num_pins=6, + pin_labels="GND|RX|TX|NC|OUT|IN", + position=R + ] + + // define wire + + W1 [type="3x 0,25 mm² shielded", + length="0.2m", + num_wires=3, + colors="din47100", + shield=true + ] + + // define connections + + X1:5 -> W1:1 -> X2:1 // GND + X1:2 -> W1:2 -> X2:3 // TX-RX + X1:3 -> W1:3 -> X2:2 // RX-TX + X1:5 -> W1:S // shield + X2:5 -> X2:6 // loop + +Output file: + +![Sample output diagram](idea/example1.png) + +GraphViz code generated by parser: + + digraph G { + graph [rankdir = LR, ranksep=2, fontname = "arial"]; + edge [arrowhead=none, fontname = "arial"]; + node [shape=record, style=rounded, fontname = "arial"]; + + X1[label="X1 | D-Sub DE-9 | female | {{DCD|RX|TX|DTR|GND|DSR|RTS|CTS|RI} | {1|2|3|4|5|6|7|8|9}} "]; + X2[label="X2 | Molex KK 254 6-pin | female | {{1|2|3|4|5|6} | {GND|RX|TX|NC|OUT|IN}}"]; + + W1[label="W1 | 3x 0,25 mm² shielded | 0.2 m | {{1|2|3|}|{WT|BN|GN|Shield}|{1|2|3|}}}"]; + + X1:p5 -> W1:w1i; W1:w1o -> X2:p1; + X1:p2 -> W1:w2i; W1:w2o -> X2:p3; + X1:p3 -> W1:w3i; W1:w3o -> X2:p2; + X1:p5 -> W1:wsi; + X2:p5:w -> X2:p6:w + }