Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти і науки України
Національний університет “Львівська політехніка”
Кафедра ЕОМ
/
Лабораторна робота №8
з Переферійних пристроїв
на тему: «Відтворення передані посимвольних даних через USB порт
у графічному вигляді.»
Львів – 2017
МЕТА РОБОТИ: ознайомитися з процесом формування та передачі постмвольних даних у графічному представленні в схемі кодування NRZI через послідовний USB інтерфейс.
Хід роботи
Метод кодування NRZI
NRZI - Non Return to Zero Invertive (інверсне кодування без повернення до нуля) Цей метод є модифікованим методом Non Return to Zero (NRZ), де для подання 1 і 0 використовуються потенціали двох рівнів. У коді NRZ I також використовується 2 потенціалу, але його поточне значення залежить від попереднього. Якщо поточне значення біта "0", то отриманий потенціал повинен бути інверсією від попереднього, якщо значення біта "1" - такий же.
/
Оскільки код незахищений від довгих послідовностей "нулів" або "одиниць", то це може призвести до проблем синхронізації. Тому перед передачею, задану послідовність бітів рекомендується попередньо закодувати кодом передбачають скремблювання (скремблер призначений для додання властивостей випадковості переданої послідовності даних з метою полегшення виділення тактової частоти приймачем).
Програма реалізує графік передачі даних закодованих за допомогою NRZI
/
/
Висновок: я ознайомився з процесом передачі даних через послідовний інтерфейс USB.
Додаток
package work;
import java.io.IOException;
import java.nio.file.*;
import java.util.ArrayList;
public class PathWorker {
public static ArrayList<String> getPath() {
Iterable<Path> dirs = FileSystems.getDefault().getRootDirectories();
ArrayList<String> disks = new ArrayList<>();
for (Path name: dirs) {
disks.add(name.toString());
}
return disks;
}
public static boolean fileCopy(Path source, Path result){
try {
Files.copy(source, result.resolve(source.getFileName()), StandardCopyOption.REPLACE_EXISTING);
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
public static boolean fileMove(Path source, Path result){
try {
Files.move(source, result.resolve(source.getFileName()), StandardCopyOption.REPLACE_EXISTING);
return true;
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
public static DirectoryStream<Path> getAllFilesInCatalog(Path source){
try (DirectoryStream<Path> stream = Files.newDirectoryStream(source)) {
for (Path file: stream) {
System.out.println(file.getFileName());
}
return stream;
} catch (IOException | DirectoryIteratorException x) {
System.err.println(x);
return null;
}
}
}
package work;
import javafx.collections.FXCollections;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javax.swing.*;
import java.io.File;
import java.io.IOException;
import java.nio.file.*;
import java.util.ArrayList;
public class Controller {
private static ArrayList<String> disks;
private static Path actualDisk = Paths.get("NULL");
private static Path outputPath = Paths.get("NULL");
@FXML
private Button buttonFileChose;
@FXML
private Button buttonCopyFile;
@FXML
private Button buttonMoveFile;
@FXML
private ComboBox comboBoxChoseDisk;
@FXML
private Label labelInputPath;
@FXML
private Label labelInfoAboutInputPath;
@FXML
private TextArea textAreaDisk;
@FXML
private ScrollBar scrollBarDisk;
@FXML
private void choseInputPath(){
JFileChooser fileOpen = new JFileChooser();
int ret = fileOpen.showDialog(null, "Відкрити файл");
if (ret == JFileChooser.APPROVE_OPTION) {
File file = fileOpen.getSelectedFile();
outputPath = Paths.get(file.toURI());
labelInputPath.setText(file.toString());
labelInfoAboutInputPath.setVisible(true);
labelInputPath.setVisible(true);
buttonMoveFile.setVisible(true);
buttonCopyFile.setVisible(true);
}
}
@FXML
private void moveFile(){
if(Files.exists(outputPath) && Files.exists(actualDisk)){
PathWorker.fileMove(outputPath, actualDisk);
getDiskData();
}
else {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Error");
alert.setHeaderText("Переміщення не виконане");
alert.setContentText("Перевірте наявність накопичувачи чи вибраного файлу");
alert.showAndWait();
}
}
@FXML
private void copyFile(){
if(Files.exists(outputPath) && Files.exists(actualDisk)){
PathWorker.fileCopy(outputPath, actualDisk);
getDiskData();
}
else {
Alert alert = new Alert(Alert.AlertType.ERROR);
alert.setTitle("Error");
alert.setHeaderText("Копіювання не виконане");
alert.setContentText("Перевірте наявність накопичувачи чи вибраного файлу");
alert.showAndWait();
}
}
@FXML
private void listSynchronize(){
disks = PathWorker.getPath();
comboBoxChoseDisk.setItems(FXCollections.observableArrayList(disks));
}
@FXML
private void choseDisk(){
comboBoxChoseDisk.getSelectionModel().selectedItemProperty().addListener((observable, oldValue, newValue) -> {
actualDisk = Paths.get(newValue.toString());
getDiskData();
});
}
@FXML
private void getDiskData(){
if(Files.exists(actualDisk)) {
try (DirectoryStream<Path> stream = Files.newDirectoryStream(actualDisk)) {
StringBuilder allFiles = new StringBuilder("");
for (Path file : stream) {
allFiles.append(file.getFileName().toString());
allFiles.append("\n");
}
textAreaDisk.setText(allFiles.toString());
} catch (IOException | DirectoryIteratorException x) {
System.err.println(x);
}
}
}
@FXML
private void initialize(){
disks = PathWorker.getPath();
comboBoxChoseDisk.setItems(FXCollections.observableArrayList(disks));
buttonCopyFile.setVisible(false);
buttonMoveFile.setVisible(false);
labelInputPath.setVisible(false);
labelInfoAboutInputPath.setVisible(false);
choseDisk();
}
}
package work;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.stage.Stage;
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws Exception{
Parent root = FXMLLoader.load(getClass().getResource("sample.fxml"));
primaryStage.setTitle("ioUSB");
primaryStage.getIcons().add(new Image("file:pendrive.png"));
primaryStage.setScene(new Scene(root, 560, 416));
primaryStage.show();
PathWorker.getPath();
}
public static void main(String[] args) {
launch(args);
}
}
Ви не можете залишити коментар. Для цього, будь ласка, увійдіть
або зареєструйтесь.
Ділись своїми роботами та отримуй миттєві бонуси!
Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!