当我将此代码加载到我的 Arduino 中时,他连接到 WiFi 并出现在我的 IP 扫描仪上。但是当我在 FireFox 中打开设备的 IP 时,没有任何负载。 (http://10.0.0.40/env) 我的代码是否有问题,或者它不是这样工作的。我有一个传感器,可以读取温度和湿度。这两个值应该在我的网络中可用于 fetch()。使用 Javascript 我想在我的本地 html 页面上显示这些。网络凭据只是经过审查。
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.util.ArrayList;
import java.util.List;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingUtilities;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
public class TestApp {
private JComboBox<String> jComboBox1;
private final ArrayList<String> listOfNames = new ArrayList<>();
public TestApp() {
listOfNames.add("David Kroukamp");
listOfNames.add("Abra");
listOfNames.add("Camickr");
listOfNames.add("Hovercraft Full Of Eels");
listOfNames.add("Andrew Thompson");
listOfNames.add("MadProgrammer");
listOfNames.add("TrashGod");
listOfNames.add("Gilbert Le Blanc");
listOfNames.add("mKorbel");
listOfNames.add("kleopatra");
listOfNames.add("Reimeus");
listOfNames.add("StanislavL");
listOfNames.add("Paul Samsotha");
listOfNames.add("Guillaume Polet");
createAndShowGui();
}
public static void main(String[] args) {
SwingUtilities.invokeLater(TestApp::new);
}
private void createAndShowGui() {
JFrame frame = new JFrame("TestApp");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jComboBox1 = new JComboBox<>(new DefaultComboBoxModel(listOfNames.toArray()));
JLabel nameLabel = new JLabel("Name:");
JTextField textField = new JTextField(20);
textField.getDocument().addDocumentListener(new DocumentListener() {
@Override
public void insertUpdate(DocumentEvent e) {
comboFilter(textField.getText());
}
@Override
public void removeUpdate(DocumentEvent e) {
comboFilter(textField.getText());
}
@Override
public void changedUpdate(DocumentEvent e) {
// plain text components dont fire this
}
});
JButton showKeyboardButton = new JButton("Show Keyboard");
showKeyboardButton.addActionListener((ActionEvent e) -> {
new DialogVirtualKeyboardReal(frame, true, textField);
});
JPanel panel = new JPanel();
panel.add(nameLabel);
panel.add(textField);
panel.add(showKeyboardButton);
frame.add(panel, BorderLayout.CENTER);
frame.add(jComboBox1, BorderLayout.SOUTH);
frame.pack();
frame.setVisible(true);
new DialogVirtualKeyboardReal(frame, false, textField);
}
public void comboFilter(String enteredText) {
List<String> filterArray = new ArrayList<>();
listOfNames.forEach((item) -> {
if (item.contains(enteredText)) {
filterArray.add(item);
}
});
if (filterArray.size() > 0) {
jComboBox1.setModel(new DefaultComboBoxModel(filterArray.toArray()));
//jComboBox1.showPopup();
} else {
//jComboBox1.hidePopup();
}
}
}
答案 0 :(得分:2)
您发布的 loop()
代码如下所示:
void loop() {
// put your main code here, to run repeatedly:
delay(2000);
float temperature = dht.readTemperature();
float humidty = dht.readHumidity();
}
您没有包含允许 Web 服务器运行所需的代码。网络服务器需要有机会在 loop()
期间运行,否则它无法为请求提供服务。
您的 loop()
需要包含 server.handleClient()
。
您可以看到此 in basic examples 显示如何使用 WebServer
。
一旦您添加了该代码,您就需要重写 loop()
,不要总是延迟两秒,否则您将延迟网络服务器以及传感器读取。