# HG changeset patch # User František Kučera # Date 1335294172 -7200 # Node ID 131d2652b2412dc883ad78a5b56dbdfbd09b9666 # Parent b166c6f4971947aa8979ba7a6aa61c244aa8bc9e LED displej – ovládání řadiče – první verze diff -r b166c6f49719 -r 131d2652b241 c++/led-displej/kompiluj.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c++/led-displej/kompiluj.sh Tue Apr 24 21:02:52 2012 +0200 @@ -0,0 +1,4 @@ +#!/bin/bash + +g++ led-displej.cpp -o led-displej; + diff -r b166c6f49719 -r 131d2652b241 c++/led-displej/led-displej Binary file c++/led-displej/led-displej has changed diff -r b166c6f49719 -r 131d2652b241 c++/led-displej/led-displej.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/c++/led-displej/led-displej.cpp Tue Apr 24 21:02:52 2012 +0200 @@ -0,0 +1,64 @@ +#include +#include + +/** + * Slouží k ovládání LED displeje pomocí řadiče M5482 připojeného na LPT port. + * Používají se jen dva piny: DATA a CLOCK signál. + */ + +/** + * = 1 → normální běh + * > 1 → zpomalené pro ladění + */ +const int BRZDA = 100000; + +void zapisSeriove(bool hodnoty[]); +void zapisData(bool hodnota); +void zapisClock(bool hodnota); +void cekej(int mikroSekund); + +int main() { + std::cout << "spouštím program LED Displej" << std::endl; + + bool hodnoty[] = {1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1}; + + std::cout << "velikost pole: " << sizeof(hodnoty) << std::endl; // vypíše 36 + + zapisSeriove(hodnoty); +} + +void zapisSeriove(bool hodnoty[]) { + std::cout << "velikost pole ve funkci: " << sizeof(hodnoty) << std::endl; // vypíše 8 + for (int i = 0; i < sizeof(hodnoty); i++) { + zapisData(hodnoty[i]); + cekej(1); + zapisClock(true); + cekej(1); + zapisClock(false); + cekej(1); + std::cout << "---" << std::endl; + } +} + +void zapisData(bool hodnota) { + std::cout << "DATA = " << hodnota << std::endl; + if (hodnota) { + // TODO: zapsat na LPT + } else { + // TODO: zapsat na LPT + } +} + +void zapisClock(bool hodnota) { + std::cout << "CLOCK = " << hodnota << std::endl; + if (hodnota) { + // TODO: zapsat na LPT + } else { + // TODO: zapsat na LPT + } +} + +void cekej(int mikroSekund) { + usleep(mikroSekund*BRZDA); +} + diff -r b166c6f49719 -r 131d2652b241 java/ObrazkovyApplet/src/cz/frantovo/obrazkovyApplet/ObrazkovyApplet.form --- a/java/ObrazkovyApplet/src/cz/frantovo/obrazkovyApplet/ObrazkovyApplet.form Mon Mar 14 21:54:03 2011 +0100 +++ b/java/ObrazkovyApplet/src/cz/frantovo/obrazkovyApplet/ObrazkovyApplet.form Tue Apr 24 21:02:52 2012 +0200 @@ -19,7 +19,7 @@ - + @@ -34,7 +34,7 @@ - + @@ -59,7 +59,7 @@ - + diff -r b166c6f49719 -r 131d2652b241 java/ObrazkovyApplet/src/cz/frantovo/obrazkovyApplet/ObrazkovyApplet.java --- a/java/ObrazkovyApplet/src/cz/frantovo/obrazkovyApplet/ObrazkovyApplet.java Mon Mar 14 21:54:03 2011 +0100 +++ b/java/ObrazkovyApplet/src/cz/frantovo/obrazkovyApplet/ObrazkovyApplet.java Tue Apr 24 21:02:52 2012 +0200 @@ -1,12 +1,11 @@ package cz.frantovo.obrazkovyApplet; +import java.awt.BorderLayout; import java.awt.Color; import java.awt.Graphics; -import java.awt.Graphics2D; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; -import java.awt.image.BufferedImage; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStream; @@ -18,6 +17,9 @@ import javax.swing.UIManager; import javax.swing.UIManager.LookAndFeelInfo; +/** + * @author František Kučera, podnik.frantovo.cz + */ public class ObrazkovyApplet extends javax.swing.JApplet implements MouseMotionListener, MouseListener { private static final Logger log = Logger.getLogger(ObrazkovyApplet.class.getSimpleName()); @@ -25,9 +27,7 @@ private int stareX; private int stareY; private boolean kresli; - private Graphics g; - private Graphics2D vystupniGrafika; - private BufferedImage obrazek; + private Platno platno; private void odesliData() { try { @@ -36,7 +36,7 @@ spojeni.setDoOutput(true); spojeni.connect(); OutputStream os = spojeni.getOutputStream(); - ImageIO.write(obrazek, "png", os); + ImageIO.write(platno.getObrazek(), "png", os); os.flush(); os.close(); @@ -52,8 +52,8 @@ } private void smazGrafiku() { - getVystupniGrafika().clearRect(0, 0, platno.getWidth(), platno.getHeight()); - g.clearRect(0, 0, platno.getWidth(), platno.getHeight()); + platno.getObrazek().getGraphics().fillRect(0, 0, panel.getWidth(), panel.getHeight()); + platno.repaint(); } public void mouseDragged(MouseEvent e) { @@ -62,14 +62,12 @@ if (kresli) { vypisStav("kreslím: " + stareX + "x" + stareY + "→" + x + "x" + y); - g = platno.getGraphics(); + + Graphics g = platno.getObrazek().getGraphics(); g.setColor(Color.BLUE); g.drawLine(stareX, stareY, x, y); - platno.pa - - - getVystupniGrafika().drawLine(stareX, stareY, x, y); + platno.repaint(); } stareX = x; @@ -99,19 +97,6 @@ kresli = false; } - private Graphics2D getVystupniGrafika() { - if (obrazek == null) { - obrazek = new BufferedImage(platno.getWidth(), platno.getHeight(), BufferedImage.TYPE_INT_RGB); - } - if (vystupniGrafika == null) { - vystupniGrafika = obrazek.createGraphics(); - vystupniGrafika.setBackground(Color.WHITE); - vystupniGrafika.setColor(Color.BLUE); - vystupniGrafika.clearRect(0, 0, platno.getWidth(), platno.getHeight()); - } - return vystupniGrafika; - } - @Override public void init() { @@ -131,7 +116,11 @@ java.awt.EventQueue.invokeAndWait(new Runnable() { public void run() { + platno = new Platno(); + platno.repaint(); initComponents(); + panel.setLayout(new BorderLayout()); + panel.add(platno, BorderLayout.CENTER); } }); } catch (Exception e) { @@ -139,8 +128,8 @@ } /** Nastavení plátna */ - platno.addMouseMotionListener(ObrazkovyApplet.this); - platno.addMouseListener(ObrazkovyApplet.this); + panel.addMouseMotionListener(ObrazkovyApplet.this); + panel.addMouseListener(ObrazkovyApplet.this); log.log(Level.INFO, "plátno nastaveno"); } @@ -150,7 +139,7 @@ odeslat = new javax.swing.JButton(); stavovyRadek = new javax.swing.JLabel(); - platno = new javax.swing.JPanel(); + panel = new javax.swing.JPanel(); odeslat.setText("Odeslat na server"); odeslat.addActionListener(new java.awt.event.ActionListener() { @@ -161,16 +150,14 @@ stavovyRadek.setText(" "); - platno.setDoubleBuffered(true); - - javax.swing.GroupLayout platnoLayout = new javax.swing.GroupLayout(platno); - platno.setLayout(platnoLayout); - platnoLayout.setHorizontalGroup( - platnoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + javax.swing.GroupLayout panelLayout = new javax.swing.GroupLayout(panel); + panel.setLayout(panelLayout); + panelLayout.setHorizontalGroup( + panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 388, Short.MAX_VALUE) ); - platnoLayout.setVerticalGroup( - platnoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + panelLayout.setVerticalGroup( + panelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGap(0, 255, Short.MAX_VALUE) ); @@ -181,7 +168,7 @@ .addGroup(layout.createSequentialGroup() .addContainerGap() .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(platno, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGroup(layout.createSequentialGroup() .addComponent(stavovyRadek, javax.swing.GroupLayout.DEFAULT_SIZE, 243, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -192,7 +179,7 @@ layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() .addContainerGap() - .addComponent(platno, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(panel, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(odeslat) @@ -210,7 +197,7 @@ } // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton odeslat; - private javax.swing.JPanel platno; + private javax.swing.JPanel panel; private javax.swing.JLabel stavovyRadek; // End of variables declaration//GEN-END:variables }